pythonでログ出力はprint関数に頼りまくってたので、正しくログ出力をやる。
ログに出すことで、
- 処理結果がファイルとして保存されるので、調査しやすい。
- 日時が出力でき、時系列が把握しやすくなる
- デバック出力とアプリ実行時の出力と分けて記載することができる。
今回作ったもの
ログ出力処理ロジック(app.util.Log.py)
import yaml import logging.config path = os.path.dirname(os.path.abspath(__file__)) with open(path + '/logging.yaml') as file: obj = yaml.safe_load(file) logging.config.dictConfig(obj) logger = logging.getLogger('root')
ログ出力利用処理(main.py)
from app.util.Log import logger logger.debug("test")
設定ファイル(logging.yaml)
version: 1 formatters: simple: format: '%(asctime)s - %(name)s - %(levelname)s - %(message)s' handlers: console: class: logging.StreamHandler level: DEBUG formatter: simple stream: ext://sys.stdout file: class: logging.handlers.TimedRotatingFileHandler filename: log.log level: DEBUG when: d backupCount: 14 encoding: UTF-8 formatter: simple loggers: root: level: DEBUG handlers: [console] propagate: no root: level: DEBUG handlers: [console, file]
出力結果
2022-03-21 07:47:32,457 - root - DEBUG - test