【Python】ロギングのフォーマッタで出力レイアウトの指定

Pythonの応用
スポンサーリンク

Pythonのロギングについて、概要は見てきました。

【Python】ロギングについて - レベルと出力
Pythonを使ってプログラムの実行中に起こった出来事を記録するロギングを扱います。CRITICAL、ERROR、WARNING、NFO、DEBUGのロギングレベルの変更や出力フォーマットの方法、ファイルへの出力について見ていきます。

ここからはロギングの機能をもう少し深く見ていきます。

ここではロギングのフォーマッタ(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)の属性には他にもいろいろなものがありますので公式ドキュメントで確認してみてください。

logging --- Python 用ロギング機能
ソースコード: Lib/logging/__init__.py Important: このページには、リファレンス情報だけが含まれています。チュートリアルは、以下のページを参照してください 基本チュートリアル, 上級チュートリアル, ロギン...

上記で扱ったlevelname、message、asctime以外にも色々あるのがわかります。

これらを使ってロギングの出力情報を必要なものに変えて出力することができます。

スポンサーリンク

まとめ

ここでは、Pythonのロギングについて、フォーマッタ(formatter)の属性を変更することで出力レイアウトを指定することを見てきました。

フォーマッタの記入の方法でレイアウトが変更されていることを確認しました。

レイアウトの変更には色々なログの出力(LogRecord)の属性を指定できるので公式ドキュメントなどでどのようなものがあるのか確認をしておきましょう。

タイトルとURLをコピーしました