pythonでのlogging生成ログモジュールの使用

3506 ワード

ログの記録が容易でスレッドが安全なモジュール
1、ログレベル
ログは全部で5つの等級に分けられ、低から高までそれぞれDEBUG INFO WARNING ERROR CRITICALである.
DEBUG:詳細は、通常、トラブルシューティングにのみ表示されます
INFO:すべてが予定通りに運行されていることを確認する
WARNING:予期せぬことが起こったことを示す兆候や、近い将来(例えば、ディスク容量が低い)問題が発生したことを示す兆候があります.このソフトウェアはまだ予想通りに動作します.
ERROR:もっと深刻な問題は、ソフトウェアがいくつかの機能を実行できなかったことです.
CRITICAL:重大なエラーで、プログラム自体が実行できない可能性があります.
この5つのレベルは、debug、info、warning、error、criticalの5つのログを打つ方法にも対応しています.デフォルトはWARNINGで、WARNING以上で追跡されます.
2、ログ出力
トレースを記録するには、出力コンソールとログファイルなどのファイルに記録する方法が2つあります.
3、注意
Pythonのloggingモジュールでログを記録する場合、ログを繰り返し記録する問題に遭遇し、1番目のレコードは1回、2番目のレコードは2回、3番目のレコードは3回書きます.このように日記をつけるのはだめだ.
理由:handlerは削除されませんでした
解決:ログの記録が完了した後にremoveHandler
使用方法
1、シングルログファイル
ログモジュールを作成します.pyのファイル
import logging
  
  
logging.basicConfig(filename='log.log',
                    format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S %p',
                    level=10)
  
logging.debug('debug')
logging.info('info')
logging.warning('warning')
logging.error('error')
logging.critical('critical')
logging.log(10,'log')

実行:実行結果からlogが作成されました.logログファイル、時間は自動的に生産され、moduleは現在のpythonコードファイル名です.
ログレベル:
CRITICAL = 50
FATAL = CRITICAL
ERROR = 40
WARNING = 30
WARN = WARNING
INFO = 20
DEBUG = 10
NOTSET = 0
注意:ログファイルは、「現在の書き込みレベル」が「ログレベル」より大きい場合にのみ記録されます.ログ形式:
%(name)s      Logger   

%(levelno)s             

%(levelname)s             

%(pathname)s                     

%(filename)s                   

%(module)s                

%(funcName)s                

%(lineno)d                     

%(created)f        , UNIX              

%(relativeCreated)d            , Logger         

%(asctime)s              。      “2003-07-08 16:49:45,896”。        

%(thread)d      ID。

%(threadName)s       。

%(process)d      ID。

%(message)s           

2、マルチファイルログ
上記ログを記録する機能では、単一ファイルにログを記録するのみである、複数のログファイルを設定したい場合は、logging.basicConfigは完了しません.ファイルとログ操作オブジェクトをカスタマイズする必要があります.
import logging

#     
file1 = logging.FileHandler(filename='l1.log', mode='a', encoding='utf-8')
fmt = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s", datefmt='%Y-%m-%d %H:%M:%S')
file1.setFormatter(fmt)

file2 = logging.FileHandler(filename='l2.log', mode='a', encoding='utf-8')
fmt = logging.Formatter()
file2.setFormatter(fmt)

#     
logger1 = logging.Logger(name='   name', level=logging.ERROR)
logger1.addHandler(file1)
logger1.addHandler(file2)
# logger1.removeHandler(file1)
# logger1.removeHandler(file2)

#    
logger1.error(msg='   msg111')
logger1.log(msg='   msg222', level=50)


#     
file3 = logging.FileHandler(filename='l3.log', mode='a', encoding='utf-8')
fmt = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s", datefmt='%Y-%m-%d %H:%M:%S')
file3.setFormatter(fmt)

#     
logger2 = logging.Logger(name='   name222222', level=logging.INFO)
logger2.addHandler(file3)

#    
logger2.info('   msg333333')

実行:
上記のように作成された2つのログ・オブジェクト
  • 【logger 1】を使用してログを書くと、対応するコンテンツがl 1に書き込まれる.logとl 2.logファイル
  • 【logger 2】を使用してログを書くと、対応するコンテンツがl 3に書き込まれる.logファイル