Pythonのロギングモジュールには、ログをJSON形式で出力する機能があります。これにより、SplunkやElasticSearchなどのログ分析ツールに適した形式でログを出力することが可能になります。
JSON形式のログ出力の設定
まず、ログ出力のフォーマットを設定します。以下に示すように、logging.Formatter
クラスを使用してフォーマットを定義します。
{
"version": 1,
"formatters": {
"detailed": {
"class": "logging.Formatter",
"format": "%(asctime)s %(name)-15s %(levelname)-13s %(message)s",
"datefmt": "%Y-%m-%d %H:%M:%S"
}
},
...
}
次に、ログ出力のハンドラを設定します。以下に示すように、logging.StreamHandler
やlogging.FileHandler
などのクラスを使用してハンドラを定義します。
{
...
"handlers": {
"console": {
"class": "logging.StreamHandler",
"level": "INFO",
"formatter": "detailed"
},
"file": {
"class": "logging.FileHandler",
"filename": "log/mplog.log",
"mode": "a",
"formatter": "detailed"
},
...
},
...
}
最後に、ロガーを設定します。以下に示すように、logging.getLogger
関数を使用してロガーを取得します。
{
...
"loggers": {
"testfile": {
"handlers": ["testfile"]
}
},
...
}
以上の設定により、Pythonのログ出力をJSON形式で行うことができます。
参考
- Zennの記事「【Python】loggre ログ出力を、JSON形式で設定する」
- PyPIのパッケージ「logging-json」
- Stack Overflowの質問「How to implement json format logs in python」
- Qiitaの記事「pythonでjson形式でログを出す #Python」