(A)ログログのフレーム部
- ロガーは:私たちにログインするときロガーメイン・クラスは、オブジェクトが作成されていることを、私たちは、入ってくる情報のそのメソッドを呼び出し、ログレコードと呼ばれるログレコードを生成するためのテンプレートを記録することができます。
- ハンドラ:つまり、私たちは、FTPプロトコルを介してリモートサーバにハンドラのログを指定することができますよう私たちは、など、場所とログ保存形式を指定するログレコードに出力することができるログを、処理するためのクラスは完全に私たちを助けますこれらの事。
- フォーマッタ:ログレコードが実際にその後、私たちは私たちが望むログテキストのセクションにそれらを保存したい、一つのオブジェクトが生成され、その後は、プロセスはフォーマッタによって完成されるだろう、復帰書式設定プロセスを持っている必要がありますログ文字列はハンドルにバックハンドラに渡されます。
- フィルタ:ログを保存するために加えて、我々は、保存のすべての時間を必要としないことがあり、私たちは、保存する場合にのみ、その保存する前に、それはまた、私たちが望むのログを残して、フィルタリングする必要があり、我々はそれに何をしたいの一部を保存するためにのみ必要があるかもしれませんなどレベルのログ、または単にキーワードのログ保存、は、フィルタに上のフィルタリングプロセスが完了します。
(II)は、ログファイルのメインプロセスに書き込ま:
- ロガーオブジェクトの作成
- ログレベルのレベルを設定します。
- ハンドラ、書き込み用のログファイルを作成します。
- 出力フォーマットハンドラを設定するフォーマッタ
- フィルターろ過送信ハンドラの後にロガー
(C)例:
ロギングモジュールのログログファイルを使用します
'''
logging日志框架-logger,formatter,filter,handler
'''
import logging
#创建一个logger对象
logger = logging.getLogger()
#设置logger日志级别
logger.setLevel(logging.NOTSET)
#设置日志去向
handler=logging.FileHandler(filename='study02.log', encoding='utf-8',)
#设置实际输入到日志文件的日志级别
handler.setLevel(logging.ERROR)
#设置日志格式
formatter=logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
#给logger对象添加日志去向
logger.addHandler(handler)
logger.debug('This is debug message')
logger.info('This is info message')
logger.warning('This is warning message')
logger.error('this is error message')
logger.critical('this is cirtical message')
(D)拡張
ロガー:
Loggerオブジェクトは、3つのことを行います。
まず、彼らは、アプリケーションメッセージが実行時に記録することができるように、方法アプリケーションコードの数にさらされています。
第二に、ログメッセージを記録するかを決定することを目的と重症度(デフォルトフィルタ設備)またはフィルタオブジェクトによって記録される必要があります。
第三に、すべての利害ログハンドラへの転送を関連オブジェクトレコードのログメッセージ。
設定し、送信メッセージ:二つのカテゴリーにオブジェクトを記録する従来の方法。
これらは、最も一般的な設定方法です:
Logger.setLevel()セキュリティログ情報指定されたロガーの最低レベルが処理されます。
Logger.addHandler()オブジェクトからレコーダーハンドラオブジェクトを追加します。
Logger.addFilter()は、フィルタオブジェクトレコードオブジェクトから添加しました。
ハンドラ
处理程序
オブジェクトは、指定された宛先ハンドラに割り当てられた適切なメッセージログ(の重症度に基づいてログメッセージ)の原因です。
Logger
オブジェクトは、可能なaddHandler()
ゼロ個以上のハンドラメソッドをオブジェクトに増加しました。例えば、アプリケーションは、電子メールボックスにログファイルに、すべてのエラーレベル(エラー)と、標準出力に送信されるログメッセージ上、すべての重大度レベル(クリティカル)ログメッセージをすべてのログメッセージを送信することができます。この例では、3つの別々のプロセッサ、特定レベルの位置に特定のメッセージを送信するための各責任を必要とします。一般的に使用される4つがあります。
1)logging.StreamHandler - >コンソール出力
ハンドラは、任意の出力ファイルオブジェクトにこの情報を使用することができる(ファイルオブジェクト)のsys.stdoutの又はsys.stderrを持ち同様です。これは、コンストラクタである:StreamHandlerは([STRM])
- ファイルオブジェクトであるSTRMパラメータ。デフォルトではsys.stderrを持ちです
2) logging.FileHandler - >ファイル出力
同様にStreamHandlerは、ログファイルに情報を出力します。しかし、FileHandlerのは、あなたがファイルを開くのに役立ちます。これはコンストラクタです:FileHandlerの(ファイル名[、モード])
- ファイル名はファイル名で、ファイル名を指定する必要があります。
- モードは、ファイルへの道を開くことです。デフォルトは「」、ファイルの末尾に追加されています。
3) logging.handlers.RotatingFileHandler - >ログファイルの自動セグメンテーションの大きさに応じて指定されたファイルサイズに達すると、再構築
上記のFileHandlerに似たハンドラが、それは、ファイルのサイズを管理することができます。ファイルが一定のサイズに達すると、それは自動的に現在のログファイルの名前を変更した後、出力され続け、同じ名前の新しいログファイルが作成されます。たとえば、ログファイルはchat.logです。chat.logが達するとサイズが指定し、RotatingFileHandlerは自動的に名前を変更chat.log.1をファイル。しかし、chat.log.1はすでに、意志最初chat.log.1リネームchat.log.2が存在する場合。。。最後に、chat.logを再作成し、それが出力ログ情報へ続きます。これは、コンストラクタである:RotatingFileHandler(ファイル名[、モード[、MAXBYTES [、backupCount]]])
- どこにファイル名とモードのFileHandler二つのパラメータと同じ。
- MAXBYTESファイルは、ログファイルの最大サイズを指定するために使用されます。MAXBYTESがゼロの場合、ログファイルが無限にできることを、この手段は、プロセスは、上記の名前の変更は発生しません。
- 保持するバックアップファイルの指定された数のためbackupCount。上記の名前変更プロセスが発生したときに、2を指定した場合、元chat.log.2の名前は変更されませんが、削除されました。
。4) logging.handlers.TimedRotatingFileHandler - > 時間での自動ログファイルのセグメンテーション
ハンドラとRotatingFileHandler似ていますが、それは再作成するログファイルには、ファイルサイズを決定する際に判定する必要はありませんが、一定の時間間隔は、自動的に新しいログファイルを作成します。プロセスの名前を変更し、RotatingFileHandler似ていますが、新しいファイルには、数値が、現在の時刻ではありません。TimedRotatingFileHandler(ファイル名[、[、区間[、backupCount]]]):これは、コンストラクタであります
- ここで、filenameパラメータとbackupCountパラメータとRotatingFileHandlerは同じ意味を持ちます。
- 間隔は、時間間隔です。
- ときのパラメータは文字列です。時間間隔の単位で表さ、大文字と小文字を区別しません。それは次の値があります。
- S秒
- Mポイント
- 行動発起時刻
- D-日
- 週W(間隔== 0代わっ月曜日)
- 深夜毎朝
参考住所:https://www.cnblogs.com/nancyzhu/p/8551506.html
gitbuh住所: https://github.com/panc-test/python-study.git