Python 標準ライブラリ logging ロギング
Publish date: 2021-12-13
Pythonでのログ出力は標準で用意されているライブラリloggingを使うことで行なえます。
ログ出力サンプル
ファイルへのログ出力
日付名称のファイルへのログ出力
import logging
import time
logging.basicConfig(filename=time.strftime('%Y%m%d.log'), encoding='utf-8',
format='[%(asctime)s][%(levelname)s]%(message)s',
datefmt='%Y/%m/%d %H:%M:%S',
level=logging.DEBUG)
logging.debug('デバッグログ')
logging.info('情報ログ')
logging.warning('警告ログ')
logging.error('エラーログ')
[2021/08/20 23:36:27][DEBUG]デバッグログ
[2021/08/20 23:36:27][INFO]情報ログ
[2021/08/20 23:36:27][WARNING]警告ログ
[2021/08/20 23:36:27][ERROR]エラーログ
複数対象へのログ出力
警告以上のログをファイルに、全てのログをコンソールに出力。
import logging
import time
logger = logging.getLogger('LoggerName')
logger.setLevel(logging.DEBUG)
fh = logging.FileHandler(time.strftime('%Y%m%d.log'),encoding='utf-8')
fh.setLevel(logging.WARN)
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('[%(asctime)s][%(levelname)s]%(message)s', datefmt='%Y/%m/%d %H:%M:%S')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
logger.addHandler(fh)
logger.addHandler(ch)
logger.debug('デバッグログ')
logger.info('情報ログ')
logger.warning('警告ログ')
logger.error('エラーログ')
20210820.log
[2021/08/20 23:36:27][WARNING]警告ログ
[2021/08/20 23:36:27][ERROR]エラーログ
コンソール
[2021/08/20 23:36:27][DEBUG]デバッグログ
[2021/08/20 23:36:27][INFO]情報ログ
[2021/08/20 23:36:27][WARNING]警告ログ
[2021/08/20 23:36:27][ERROR]エラーログ
書式と追加キーワードでの出力例
第2引数以降で指定した変数をログ出力できる。
extra
で指定した辞書の値はフォーマットで参照できる。
logger = logging.getLogger('LoggerSample')
logger.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('[%(asctime)s][%(levelname)s][%(string)s][%(number)s]%(message)s', datefmt='%Y/%m/%d %H:%M:%S')
ch.setFormatter(formatter)
logger.addHandler(ch)
d = {'string':'AAA', 'number':777 }
logger.debug('ログテスト %s %s','Test',123,extra=d)
[2021/08/20 23:42:16][DEBUG][AAA][777]ログテスト Test 123