loggingのログファイル、コンソールへの同時に出力することができる設定ファイルの設定について

loggingの設定ファイル(.conf, .ini等)を作成し、それを用いることでコンソールとログファイルに同時に異なるログレベルの結果を出力することができる。 これは、開発時のデバッグや、運用時にログ解析に便利だと思った。

logging.conf

[loggers]
keys=root

[handlers]
keys=consoleHandler, fileHandler

[logger_root]
handlers=consoleHandler,fileHandler
level=DEBUG

[logger_fileExample]
handlers=fileHandler
level=DEBUG
qualname=fileExample
propagate=0

[handler_consoleHandler]
class=StreamHandler
level=INFO
formatter=logFormatter
args=(sys.stdout, )

[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=logFormatter
args=('test.log', )

[formatters]
keys=logFormatter

[formatter_logFormatter]
class=logging.Formatter
format=%(asctime)s:%(lineno)d:%(levelname)s:%(message)s

ソースコード

import logging.config

# ログ設定ファイルからログ設定を読み込み
logging.config.fileConfig('logging.conf')

logger = logging.getLogger('simpleExample')

logger.info('info')
logger.warning('warning')

コンソールの出力結果

2021-04-27 10:06:57,672:30:INFO:info
2021-04-27 10:06:57,672:31:WARNING:warning

ログファイル:test.logの出力結果

2021-04-27 10:06:57,672:30:INFO:info
2021-04-27 10:06:57,672:31:WARNING:warning
2021-04-27 10:06:57,672:32:DEBUG:debug

コンソールから確認できないDEBUGのログが、 ログファイルから確認できる。

参考

【Python入門】loggingモジュールで処理の記録を残してみよう! | 侍エンジニアブログ