Python3 ビデオ チュートリアル]
import logging # 1.创建一个logger实例,并且logger实例的名称命名为“single info”,设定的严重级别为DEBUG LOGGER = logging.getLogger('single info') LOGGER.setLevel(logging.DEBUG) # 2.创建一个handler,这个主要用于控制台输出日志,并且设定严重级别 ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) # 3.创建handler的输出格式(formatter) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # 4.将formatter添加到handler中 ch.setFormatter(formatter) # 5.将handler添加到logger中 LOGGER.addHandler(ch)
logger インスタンス を参照します。コードは次のとおりです:
from logger import LOGGER LOGGER.debug("打印DEBUG级别的日志") LOGGER.info("打印INFO级别的日志")
2022-09-03 17:38:16,554 - single info - DEBUG - Print DEBUGレベル ログ2022-09-03 17:38:16,555 - 単一の情報 - 情報 - 情報の出力レベル ログ
デフォルト この場合、ログのログ レベルは警告であり、ログはコンソールに出力されます。 ログ レベルのサイズの関係は次のとおりです: CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET
import logging LOGGER = logging.getLogger('single info') LOGGER.error("打印ERROR级别日志") LOGGER.warning("打印WARNING级别日志") LOGGER.info("打印INFO级别日志")
ERROR レベルのログを出力WARNING レベルのログを出力
##INFO のログレベルが WARNING 未満であるため、該当するログが出力されていないことがわかります
4. 印刷形式の各種パラメータ
: 人間の作成時刻をログに記録する際の読み取り可能な形式は、デフォルトでは「2022-09-03 17:28:38,073」の形式になります (カンマの後の数字は時刻のミリ秒部分です) #%(name)s
: ロガー インスタンスの名前を示します。 %(levelname)s
: 出力されるログ レベルlog %(message)s
: ログの内容を示します5. 指定したファイルにログを出力します
import logging # 1、创建一个logger实例,并且logger实例的名称命名为“single info”,设定的严重级别为DEBUG LOGGER = logging.getLogger('single info') LOGGER.setLevel(logging.DEBUG) # 2、创建一个handler,用于写入日志文件 fh = logging.FileHandler('test.log',encoding="utf-8", mode="a") fh.setLevel(logging.WARNING) #3、定义handler的输出格式(formatter) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(filename)s - %(lineno)d : %(message)s') # 4、给handler添加formatter fh.setFormatter(formatter) # 5、给logger添加handler LOGGER.addHandler(fh)
from logger import LOGGER LOGGER.debug("打印DEBUG级别的日志") LOGGER.error("打印ERROR级别的日志")
demo.py を実行します。ファイルを実行すると、プロジェクトのルート ディレクトリに test.log ファイルという名前が生成され、ファイルの内容が次のようになっていることがわかります。
Print ERROR level logPrint警告レベルのログ
特別なヒント: ログ ファイルに中国語を出力するには、ログ ファイルを指定するときにエンコードを設定する必要があります
# #6. ログのロールバック (ファイル サイズに応じてローリング)
logger.py ファイルのみを変更します: RotatingFileHandler を定義し、最大 3 つのログ ファイルをバックアップし、各ログ ファイルは最大 1K まで可能ですimport logging from logging.handlers import RotatingFileHandler # 1、创建一个logger实例,并且logger实例的名称命名为“single info”,设定的严重级别为DEBUG LOGGER = logging.getLogger('single info') LOGGER.setLevel(logging.DEBUG) # 2、定义一个RotatingFileHandler,最多备份3个日志文件,每个日志文件最大1K rHandler = RotatingFileHandler("log.txt",maxBytes = 1,backupCount = 3,encoding="utf-8", mode="a") rHandler.setLevel(logging.WARNING) #3、定义handler的输出格式(formatter) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(filename)s - %(lineno)d : %(message)s') # 4、给handler添加formatter rHandler.setFormatter(formatter) # 5、给logger添加handler LOGGER.addHandler(rHandler)
log.txt は現在のログに保存されているファイルを表し、log.txt.1、log.txt.2、log.txt.3 はログのバックアップ ファイルを表します。
7. ログのロールバック (時間に従ってローリング)
logger.py ファイルのみを変更します: TimedRotatingFileHandler を定義し、5 つごとに最大 3 つのログ ファイルをバックアップします。秒 ログ ファイルの間隔ポイントとしてimport logging from logging.handlers import TimedRotatingFileHandler from statistics import mode # 1、创建一个logger实例,并且logger实例的名称命名为“single info”,设定的严重级别为DEBUG LOGGER = logging.getLogger('single info') LOGGER.setLevel(logging.DEBUG) # 2、定义一个TimedRotatingFileHandler,最多备份3个日志文件,每隔5秒作为一个日志文件的间隔点 rHandler =TimedRotatingFileHandler(filename="ds_update", when="S", interval=5, backupCount=3,encoding="UTF-8") rHandler.setLevel(logging.WARNING) # 3、定义handler的输出格式(formatter) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(filename)s - %(lineno)d : %(message)s') # 4、给handler添加formatter rHandler.setFormatter(formatter) # 5、给logger添加handler LOGGER.addHandler(rHandler)
ds_update は、現在のログに保存されているファイル、ds_update.2022-09-03_19-24-50、ds_update.2022-09-03_19-24-45、および ds_update.2022-09-03_19-24 を表します。 -36 はログ バックアップ ファイルを表し、ログ バックアップ ファイルは時系列で最近のものから遠いものまでローリングされます。
【関連する推奨事項: Python3 ビデオ チュートリアル
]以上がPython標準ライブラリでのロギングの使用例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。