2021-12-14に投稿

Python 標準ライブラリ logging ロギング

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

参考

Originally published at marusankakusikaku.jp
ツイッターでシェア
みんなに共有、忘れないようにメモ

maru3kaku4kaku

Pythonこつこつ学習中。よく忘れる。

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント