Python学習-ロギングモジュール

ロギングモジュール

  • 役割:アプリケーションが時間エラー、警告、およびデバッグ情報を記録するための柔軟な手段を提供します。簡単に言えばアプリケーション全体の実行中のプロセスに対して、差別化されたレベルアプリケーション実行ログファイルを提供ます
  • 指示:
    • インポートログ
    • モジュール全体(オブジェクト)の基本構成:logging.basicConfig()
    • ロガーオブジェクトを作成します。
      • 创建:logger = logging.getLogger(name
      • 命名規則:名前は可能な限りアプリケーションの名前にする必要があります
      • コンソールにログメッセージを送信します
        • logger.info(「ログの印刷を開始」)
        • logger.debug( "何かをする")
        • logger.warning(「何かが失敗する可能性があります。」)
        • logger.error( "Finish")
        • logger.critical( 'hah')
    • ログメッセージのフィルター
      • logger.setLevel(level):レベル設定
      • logger.isEnabledFor(level):このレベルのメッセージを処理するかどうかを決定します
      • フィルタを追加、フィルタを削除、オブジェクトフィルタ、組み込みフィルタはフィルタです(カスタムフィルタはクラスに継承できます)。
      • 階層レコーダーとメッセージ伝播制御(デフォルトの伝播)
    • ログメッセージプロセッサ
      • 内蔵プロセッサモジュール:詳細については、以下のリンクを参照してください
      • プロセッサー構成:レベル設定、プロセッサーの追加と削除
      • プロセッサのクリーンアップとシャットダウン
    • ログメッセージのフォーマット
      • Formatterオブジェクトを作成します
      • オブジェクトをプロセッサに追加します
      • メッセージログにプロセッサを追加します
    • コンテキスト追加情報を追加する方法
      • ログメソッド送信のメッセージの後にextra =()を自動的に追加します
      • logAdapterラッパーを使用します。このメソッドを柔軟かつ自動的追加することをお勧めします
    • 効用関数
      • キー接続を見てください:

コード

'''
logging模块作用:为应用程序提供灵活的手段记录事件、错误、警告、调试信息;
对信息进行收集、筛选、写入文件,发送系统日志,甚至可以同步发送给远程计算机
'''

'''
日志记录级别:
CRUTICAL、ERROR、WARNING、INFO、DEBUG、NOTSET
'''

# 网上案列____发出日志消息
import logging
# 基本配置语句
logging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
#
logger = logging.getLogger('a')
logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")




# 案列1___发出日志消息
import Hello
import logging
# 下面语句为特殊对象基本配置语句,接受关键字参数,根记录器。具体参数见书P287
logging.basicConfig(
    filename= 'app.log',
    format= '%(levelname)-10s %(asctime)s %(message)s',
    level= logging.INFO
)
log = logging.getLogger('app')
# 关键字对,字典插入尝试
parms = {
    
    
    'host' : 'www.python.org',
    'port' : 80
}
log.critical("Can't connect to %(host)s at port %(port)d", parms)
'''
其它发送日志信息的方法:看书
log.exception()
log.log()
log.findCaller()
'''
# 得到一个logger对象
logger = logging.getLogger(__name__)
# 设置logger内置对象级别
logger.setLevel(level = logging.INFO)
# 调用内置处理器,将消息日志写入文件,只有处理器不能运行
handler = logging.FileHandler("app.log")
# 为处理器设置日志消息级别
handler.setLevel(logging.INFO)
# 日志消息格式化信息
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# 设置处理器格式化信息
handler.setFormatter(formatter)
# 为对象增加处理器
logger.addHandler(handler)

logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")




logger = logging.getLogger(__name__)
logger.setLevel(level = logging.INFO)
handler = logging.FileHandler("log.txt")
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)

console = logging.StreamHandler()
console.setLevel(logging.INFO)

logger.addHandler(handler)
logger.addHandler(console)

logger.info("Start print log2")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")




from logging.handlers import RotatingFileHandler
logger = logging.getLogger(__name__)
logger.setLevel(level = logging.INFO)
#定义一个RotatingFileHandler,最多备份3个日志文件,每个日志文件最大1K
rHandler = RotatingFileHandler("rp.txt",maxBytes = 1*1024,backupCount = 3)
rHandler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
rHandler.setFormatter(formatter)

console = logging.StreamHandler()
console.setLevel(logging.INFO)
console.setFormatter(formatter)

logger.addHandler(rHandler)
logger.addHandler(console)

logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")

コンソールレコード

ここに画像の説明を挿入

ファイルマネージャーの記録

ここに画像の説明を挿入

学習効果

メッセージログオブジェクト、メッセージログメッセージファイルのフォーマット、フィルター、およびプロセッサーの作成をマスターします。アプリケーションの1つと例外処理メカニズムが共同で、コンソールプロンプト(pycharmの赤いメッセージプロンプトセクション)を完成させます。

ロギングリンクの詳細な調査:

Pythonとディープラーニングを学ぶいくつかの大きなブロガーを見つけてください:

おすすめ

転載: blog.csdn.net/Chaoyuan_Jam/article/details/82896263