ホームページ  >  記事  >  バックエンド開発  >  Python Logging モジュールの調査

Python Logging モジュールの調査

高洛峰
高洛峰オリジナル
2016-10-19 15:14:541198ブラウズ

背景

新しいプロジェクトにロギング関数を追加し、自分で作成したいと思っていましたが、偶然、Google を通じて、Python に非常に強力な組み込みログ モジュールであるロギングがあることを発見しました。いくつかの大まかな調査を行った後、メモをいくつか記載します。

ログを使用する理由

プログラムの実行状況を常に把握し、プログラム例外を迅速に捕捉し、プログラムエラーをタイムリーに発見するという目的を達成するために、プログラムの実行情報を追跡します

ログモジュールの紹介

Pythonから始める2.3、Python 標準ライブラリには、ログ モジュールが追加されました。ログ モジュールは、実行中のアプリケーションに標準の情報出力インターフェイスを提供します。ログ メカニズムの一般的な実装方法は、出力されるデータを txt ファイルに書き込むことです。ログ ファイルはログを記録する一般的な方法であり、ログ モジュールは、TCP および UDP ソケット、電子メール サーバー、Unix syslog システム、NT シリーズ イベント ログ システム、メモリなど、すべてのファイル状オブジェクトに出力情報を出力できます。バッファと HTTP サーバー、そしてもちろん「実際の」ファイルです。

ロギング モジュールの紹介:

import logging #import logging module
#使用logging模块:
class CLog:
   #----------------------------------------------------------------------------
   def __init__(self):
      self.logger = logging.getLogger()
      fileHandler = logging.FileHandler(LOG_FILE_PATH)
      formatHandler = logging.Formatter('%(asctime)s %(levelname)s: %(message)s')
      fileHandler.setFormatter(formatHandler)
      self.logger.addHandler(fileHandler)
      self.logger.setLevel(logging.NOTSET)
   
   #----------------------------------------------------------------------------
   def DebugMessage(self,msg):
      self.logger.debug(msg)
      pass
      
oCLog = CLog()

単純なログ モジュールは上で定義されており、この単純なコードを使用してそれを説明します。 ロギング モジュールに行きましょう

logger

を使用してログのインスタンスを取得します。コードのこの部分は、さまざまなハンドラーを追加することで、ログ インスタンスの機能を強化できます。

FileHandler

は、ログの出力端がファイルであることを指定します。ファイル パスを渡して出力ファイルを指定します。StreamHandler などの他の出力ターミナルやその他の複雑な出力メソッドを定義できます。ファイルはおそらく最も一般的に使用されるメソッドであり、他のメソッドについてはゆっくりと検討する必要があります。 FormatHandler

FomartHandler は、FileHandler の出力形式を指定します。たとえば、次の形式を使用します: ('%(asctime)s %(levelname)s: %(message)s')、その場合、出力テキスト形式は次のようになります。 2013-07 -25 08:20:01,525 INFO: Goodbye [127.0.0.1]:60442

asctime、levelname などの形式キーワードについては、LogRecord 属性の公式ドキュメントを参照してください


レベル

Logging モジュールは以下を定義します5 種類のログ情報

レベル使用時の優先度

DEBUG詳細情報。通常、問題を診断する場合にのみ重要です。

INFO物事が期待どおりに動作していることの確認。

警告何か予期せぬことが起こったこと、または何らかの問題を示すもの近い将来 (例: 「ディスク容量が少ない」)。ソフトウェアは引き続き期待どおりに動作しています。

エラーより深刻な問題により、ソフトウェアは一部の機能を実行できませんでした。

クリティカルは、次のことを示します。プログラム自体が実行を継続できない可能性があります。

優先関係:

DEBUG

self.logger.debug(msg)、self.logger.info( msg)、およびその他の関数 Priority

SetLevel

SetLevel 関数は、ログ情報を処理するための Log インスタンスの優先順位を定義します。定義された優先順位が info の場合、すべてのデバッグ情報は無視され、出力には出力されません。設定された優先順位とそれ以上の情報が入力されます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。