ホームページ  >  記事  >  バックエンド開発  >  Python標準ライブラリでのロギングの使用例

Python標準ライブラリでのロギングの使用例

WBOY
WBOY転載
2022-09-05 17:42:311765ブラウズ
#[関連する推奨事項:

Python3 ビデオ チュートリアル]

1. ロギングの概要

logging は、Python 標準ライブラリで一般的に使用されるログ ライブラリです。ログ モジュールを通じてさまざまな形式のログが保存されます。主に実行ログの出力に使用されます。出力ログ レベル、ログ保存パス、ログ ファイルのロールバックを設定できます、など。

2. 簡単な使用例

最初に logger.py ファイルを作成し、その中のコードは次のとおりです:

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 を使用した後.py ファイルと同じディレクトリに demo.py ファイルを作成し、demo.py ファイル内で以前に作成した

logger インスタンス を参照します。コードは次のとおりです:

from logger import LOGGER
 
LOGGER.debug("打印DEBUG级别的日志")
LOGGER.info("打印INFO级别的日志")

demo.py ファイルを実行すると、コンソールの入力内容は次のようになります:

2022-09-03 17:38:16,554 - single info - DEBUG - Print DEBUGレベル ログ

2022-09-03 17:38:16,555 - 単一の情報 - 情報 - 情報の出力レベル ログ

3、ログ レベル

デフォルト この場合、ログのログ レベルは警告であり、ログはコンソールに出力されます。 ログ レベルのサイズの関係は次のとおりです: 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. 印刷形式の各種パラメータ

%(asctime)s

: 人間の作成時刻をログに記録する際の読み取り可能な形式は、デフォルトでは「2022-09-03 17:28:38,073」の形式になります (カンマの後の数字は時刻のミリ秒部分です) #%(name)s

: ロガー インスタンスの名前を示します。 %(levelname)s

: 出力されるログ レベルlog %(message)s

: ログの内容を示します5. 指定したファイルにログを出力します

上記の logger.py を配置します。 ファイルは次のように変更されます。
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)
demo.py ファイル内のコードは次のとおりです。

from logger import LOGGER
 
LOGGER.debug("打印DEBUG级别的日志")
LOGGER.error("打印ERROR级别的日志")

demo.py を実行します。ファイルを実行すると、プロジェクトのルート ディレクトリに test.log ファイルという名前が生成され、ファイルの内容が次のようになっていることがわかります。

Print ERROR level log

Print警告レベルのログ


特別なヒント: ログ ファイルに中国語を出力するには、ログ ファイルを指定するときにエンコードを設定する必要があります

# #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)
demo.py を複数回実行すると、プロジェクトのルート ディレクトリに新しいファイルがあることがわかります。次の 4 つのファイルを追加します。

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)
demo.py を複数回実行すると、プロジェクトのルート ディレクトリに 4 つの新しいファイルが追加されることがわかります:

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 サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。