Python Logging - ログを出力する

Pythonでログの出力・制御を行うためには、loggingモジュールを使用します。

標準出力とファイルへの出力や、重要度に応じた出力の制御、書式の設定などが可能です。

ログ出力

今回は、ファイルと標準出力にログを出力します。

またログの書式設定とログローテーションの設定も行います。

[コード]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import logging
import logging.handlers
import sys

# 適当な名前を付けてLoggerオブジェクトを生成
logger = logging.getLogger('test_log')

# デバッグレベルを指定
# logging.CRITICAL(一番高いレベル)
# logging.ERROR
# logging.WARNING
# logging.INFO
# logging.DEBUG(一番低いレベル)
logger.setLevel(logging.DEBUG)

# ログ出力の書式設定
formatter = logging.Formatter('%(asctime)s[%(levelname)s] %(message)s')

# ファイル出力の設定(ログローテーション設定あり)
#file_handler = logging.FileHandler('test.log')
file_handler = logging.handlers.RotatingFileHandler('test.log', maxBytes=1024, backupCount=5)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)

# 標準出力の設定
stream_handler = logging.StreamHandler(sys.stdout)
stream_handler.setFormatter(formatter)
logger.addHandler(stream_handler)

logger.debug('debug test.')
logger.info('info test.')
logger.warning('warning test.')
logger.error('error test.')
logger.critical('critical test.')

実行結果は下記のとおりです。

[実行結果]

2020-04-26 18:40:15,631[DEBUG] debug test.
2020-04-26 18:40:15,636[INFO] info test.
2020-04-26 18:40:15,639[WARNING] warning test.
2020-04-26 18:40:15,644[ERROR] error test.
2020-04-26 18:40:15,648[CRITICAL] critical test.

test.logファイルにも同様の内容が出力されます。