シンプルな使用Pythonのloggingモジュール
あなたがサーバーを展開した場合、多くの場合、バックグラウンドで実行されています。プログラムの特定のエラーが発生したとき、私はログを照会します。そこでここでは、ロギングモジュールの使用に精通しています。
ロギングモジュールは、標準APIのレポートのエラーやステータス情報を定義します。
ログコンポーネント
ロギングシステムは、四つの成分が相互作用があります。私たちは、使用する必要があるロガーの ログに情報を追加するインスタンスを。これは、ログ・トリガーを作成するLogRecord情報を格納するため、メモリを。多くのロガーがあるかもしれませんハンドラ受け取るオブジェクトとプロセスのログ。使用してハンドラフォーマッタの出力ログを。
ログをファイルに入力します。
ほとんどのアプリケーションでは、ログファイルに入力されています。ログファイルに入力するよう利用にbasicConfig()関数は、デフォルトのハンドラを設定することができます。
1つの #は/ usr / binに/ ENVパイソン! 2 #- * -コーディング:UTF-8 - * - 3 インポートロギング 4 5 LOG_FILENAME = ' log.txtという' 6 logging.basicConfig( 7 名= LOG_FILENAME、 8 レベル= ロギング。 DEBUG、 9 ) 10 11 logging.debug(' ハローロギング!' ) 12 13(オープンLOG_FILENAMEと' RT ' Fとして): 14 本体= f.read() 15 16 印刷(' FILE:' ) 17 プリント(ボディ)
次のようにスクリプトの出力を実行した後です。
FILE:
DEBUG:ルート:こんにちはログ!
ログファイルを再利用
プログラムは、新しいファイルを作成し、作るために実行するたびに、それは(にbasicConfigする必要がある)ファイルモードは、ワットのパラメータ値を渡します。より便利な方法を使用することでもありますRotatingFileHandlerを、あなたが同時にファイルを作成し、古いファイルを保存することができます。
1つの #は/ usr / binに/ ENVパイソン! 2 #- * -コーディング:UTF-8 - * - 3 インポートグロブ 4 インポートlogging.handlersで 5 6 LOG_FILENAME = ' log.txtという' 7 8 my_logger = logging.getLogger(' SpecificLogger ' ) 9 my_logger.setLevel(logging.DEBUG) 10 11 位ロガーにログメッセージハンドラを追加し 12ハンドラ= logging.handlers.RotatingFileHandler( 13 LOG_FILENAME、 14 MAXBYTES = 20 、 15 backupCount = 5 、 16 ) 17 my_logger.addHandler(ハンドラ) 18 19 #は、いくつかのメッセージログ 20の ための私に(範囲20 ): 21 my_logger.debug(F ' iは= {I} ' ) 22の 23 #は、ファイルが何であるかを見ます作成 24 LOG_FILES = glob.glob(F ' {LOG_FILENAME} * ' ) 25 のためのファイル名でソート(LOG_FILES): 26 プリント(ファイル名)
次のようにスクリプトの出力を実行した後です。
log.txtという log.txtという。1 log.txtという。2 log.txtという。3 log.txtという。4 log.txtという。5
今バックアップすることができ、log.txtを記憶内容が最新である、ログは自動的にこれらのファイルの名前を変更します。
表示されたレベルの情報
ロギングは異なるログレベルを持っています。
レベル(レベル) | バリュー(価値) |
CRITICAL | 50 |
エラー | 40 |
警告 | 30 |
INFO | 20 |
デバッグ | 10 |
UNSET | 0 |
ログは、一定以上の場合のみがトリガされますすることができます。
1つの #は/ usr / binに/ ENVパイソン! 2 #- * -コーディング:UTF-8 - * - 3 インポートロギング 4 インポートSYS 5 6レベル= INT(sys.argvの[1 ]) 7 logging.basicConfig( 8 レベル= レベル 9 ) 10 11 logging.debug(' デバッグメッセージ' ) 12 logging.info(' infoメッセージ' ) 13 logging.warning(' 警告メッセージ' ) 14 logging.error(' エラーメッセージ' ) 15 logging.critical(' 重要なメッセージ')
$パイソンはlogging_level.py 10 ルート:デバッグメッセージDEBUG INFO:ルート:情報メッセージ WARNING:ルート:警告メッセージ ERROR:ルート:エラーメッセージ CRITICAL:ルート:重要なメッセージを
$パイソンはLOGGING_LEVEL 40 ルート:エラーメッセージERROR CRITICAL:ルート:重要なメッセージを
名前付きのログの例
1つの #は/ usr / binに/ ENVパイソン! 2 #- * -コーディング:UTF-8 - * - 3 インポートロギング 4 5 logging.basicConfig( 6 レベル= logging.WARNING 7 ) 8 9 logger1 = logging.getLogger(' パッケージ1 .module1 ' ) 10 logger2 = logging.getLogger(' package2.module2 ' ) 11 12 logger1.warning(' ハロー1 ' ) 13 logger2.warning(' ハロー2 ')
実行スクリプトの出力:
WARNING:package1.module1:こんにちは1 WARNING:package2.module2:ハロー2