ロギングモジュール
- 役割:アプリケーションが時間エラー、警告、およびデバッグ情報を記録するための柔軟な手段を提供します。簡単に言えば、アプリケーション全体の実行中のプロセスに対して、差別化されたレベルのアプリケーション実行ログファイルを提供します。
- 指示:
- インポートログ
- モジュール全体(オブジェクト)の基本構成: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の赤いメッセージプロンプトセクション)を完成させます。