Python loggingモジュールhandersの使い方について詳しく説明します。
一、ハンドルとは何ですか?
logingモジュールに含まれるクラス
ログオブジェクトをカスタマイズするためのルール(例えば、ログ出力フォーマット、等級などを設定する)
常用する3つのサブクラス:StreamHandler、FileHandler、TimedRotating FileHandler
二、handers基礎応用
2.1 StreamHandlerコンソール出力ログ
2.2 FileHandlerログをファイルに出力する
2.3 TimedRotating FileHandlerログ分割
TimedRotatingFileHandlerを使用してオブジェクトを作成する場合、その構造関数は以下のように定義されます。 TimedRotating FileHandler(filename[,interval]] ) filename:ログファイル名を出力するプレフィックスです。例えば、log/myap.log when:日付フォーマットによって分割され、指定された文字列パラメータを受信した場合、受信した値は以下の通りです。
「S」:Seconds
「M」:Minutes
「H」:Hours
「D」:Days
「W」:Week day(0=Mondy)
「midnight」:Roll over at midnight
intervalとは、どれぐらいの単位whenを待っていれば、ロギングが自動的にファイルを再構築しますか?このファイルの作成はfilename+suffixによって決まります。このファイルは前のファイルと重名があれば、自動的に前のファイルを上書きします。
backup Countはログを保持する個数です。デフォルトの0は自動的にログを削除しません。5に設定すると、ファイルの作成中にライブラリがこれを上回るかどうかを判断し、超えたら最初に作成したものから削除します。
三、結び
以上のログの実例は、読者により明確な操作と理解を与えるために、コードを分けて単独で実現されます。
2.3で5つのログを達成したいなら削除する効果があります。ログをループで出力してもいいです。以下の通りです。
while True:
logger.info('newdream')
3つのハンダーズのログは共同で使用できます。すべて独立したハンダーオブジェクトですが、一般的にはFileHandlerとTimedRotatingFileHandlerは同時に使用されません。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
logingモジュールに含まれるクラス
ログオブジェクトをカスタマイズするためのルール(例えば、ログ出力フォーマット、等級などを設定する)
常用する3つのサブクラス:StreamHandler、FileHandler、TimedRotating FileHandler
二、handers基礎応用
2.1 StreamHandlerコンソール出力ログ
import logging
# logger
logger = logging.getLogger('test_logger')
logger.setLevel(logging.DEBUG) #
#
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# StreamHandler
sh = logging.StreamHandler()
#StreamHandler
sh.setLevel(logging.DEBUG)
#StreamHandler
sh.setFormatter(formatter)
logger.addHandler(sh) #logger StreamHandler
#
logger.info('newdream')
上のコードを実行すると、コンソールでログ情報を出力します。2.2 FileHandlerログをファイルに出力する
import logging
# logger
logger = logging.getLogger('test_logger')
logger.setLevel(logging.DEBUG) #
#
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# FileHandler
fh = logging.FileHandler('test.log')
#FileHandler
fh.setLevel(logging.DEBUG)
#FileHandler
fh.setFormatter(formatter)
logger.addHandler(fh) #logger FileHandler
#
logger.info('newdream')
上のコードが実行されると、コンソールはログ情報を出力せず、現在のフォルダにtest.logログファイルを作成してログを記録します。2.3 TimedRotating FileHandlerログ分割
import logging
from logging import handlers
# logger
logger = logging.getLogger('test_logger')
logger.setLevel(logging.DEBUG) #
#
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# TimedRotatingFileHandler
rh = handlers.TimedRotatingFileHandler("test.log", when='S', interval=1, backupCount=5)
#TimedRotatingFileHandler
rh.setLevel(logging.DEBUG)
#TimedRotatingFileHandler
rh.suffix = "%Y_%m_%d_%H_%M_%S.log"
#TimedRotatingFileHandler
rh.setFormatter(formatter)
logger.addHandler(rh) #logger TimedRotatingFileHandler
#
logger.info('newdream')
上のコードを実行すると、コンソールはログ情報を出力せず、現在のフォルダにtest_を新規作成します。年月太陽時節あぜを分ける秒.ログログファイルをログに記録します。TimedRotatingFileHandlerを使用してオブジェクトを作成する場合、その構造関数は以下のように定義されます。
「M」:Minutes
「H」:Hours
「D」:Days
「W」:Week day(0=Mondy)
「midnight」:Roll over at midnight
intervalとは、どれぐらいの単位whenを待っていれば、ロギングが自動的にファイルを再構築しますか?このファイルの作成はfilename+suffixによって決まります。このファイルは前のファイルと重名があれば、自動的に前のファイルを上書きします。
backup Countはログを保持する個数です。デフォルトの0は自動的にログを削除しません。5に設定すると、ファイルの作成中にライブラリがこれを上回るかどうかを判断し、超えたら最初に作成したものから削除します。
三、結び
以上のログの実例は、読者により明確な操作と理解を与えるために、コードを分けて単独で実現されます。
2.3で5つのログを達成したいなら削除する効果があります。ログをループで出力してもいいです。以下の通りです。
while True:
logger.info('newdream')
3つのハンダーズのログは共同で使用できます。すべて独立したハンダーオブジェクトですが、一般的にはFileHandlerとTimedRotatingFileHandlerは同時に使用されません。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。