Pythonのロギングについて、概要は見てきました。
ここからはロギングの機能をもう少し深く見ていきます。
ここではロギングのフォーマッタ(formatter)について扱いましょう。
ロギングのフォーマッタで出力レイアウトの変更
ロギングの出力を見てみましょう。
import logging
logging.basicConfig(level=logging.INFO)
logging.info('info %s %s', 'test', 'infomation')
これは既に学んだ形でのコードです。
出力するとこうなります。
この出力をフォーマッタ(formatter)を設定して出力のレイアウトを変更してみます。
その為には、次のコードのようにformatterで書式を設定して、basicConfig()にformatを指定してやる必要があります。
import logging
formatter = '%(levelname)s:%(message)s'
logging.basicConfig(level=logging.INFO, format=formatter)
logging.info('info %s %s', 'test', 'infomation')
ここでは、formatterに%sを使ってlevelnameとmessageを表示する書式にしています。
表示してみます。
設定した書式に表示が変わっているのがわかります。ここでは先ほどとは違って「:root」が消えてログレベルとコロンで繋いたメッセージだけが表示されています。
ログ出力の属性
これに他の出力を加えてみます。
import logging
formatter = '%(levelname)s:%(asctime)s:%(message)s'
logging.basicConfig(level=logging.INFO, format=formatter)
logging.info('info %s %s', 'test', 'infomation')
formatterにasctimeというものを加えています。
これは日時の情報を取得する機能です。
表示してみます。
%(asctime)sを入れた位置に日時の情報が合わせて出力されているのがわかります。
このようにログの出力(LogRecord)の属性には他にもいろいろなものがありますので公式ドキュメントで確認してみてください。
上記で扱ったlevelname、message、asctime以外にも色々あるのがわかります。
これらを使ってロギングの出力情報を必要なものに変えて出力することができます。
まとめ
ここでは、Pythonのロギングについて、フォーマッタ(formatter)の属性を変更することで出力レイアウトを指定することを見てきました。
フォーマッタの記入の方法でレイアウトが変更されていることを確認しました。
レイアウトの変更には色々なログの出力(LogRecord)の属性を指定できるので公式ドキュメントなどでどのようなものがあるのか確認をしておきましょう。