以下の内容はhttps://nikkie-ftnext.hatenablog.com/entry/python-json-logger-formatter-for-json-logging-quickstartより取得しました。


PythonでログをJSON形式で出力したいなら、python-json-logger があるじゃな〜い!と思い出して触ったメモ

はじめに

七尾百合子さん、お誕生日 98日目 おめでとうございます! nikkieです。

python-json-loggerというライブラリの軽め素振りです。

目次

その名を聞いていた python-json-logger

2月の PyCon mini Shizuoka 2024 continue で脳内インデックスに登録されていました1

https://pypi.org/project/python-json-logger/

PythonJSON形式のログを出力したい」となって、知識が結び付きました!

JSONをサポートしたフォーマッタ!

フォーマッタは

LogRecord を、人間または外部のシステムが解釈可能な出力文字列に変換する責任を持ちます。

ref: https://docs.python.org/ja/3/library/logging.html#formatter-objects

logging モジュール構成要素を解説した分かりやすいスライドを参照して

  • フォーマッタがログレコードを文字列に変換する
  • ハンドラがフォーマッタを持つ
    • ハンドラはログの出力先に責任を持つ

このような分担になっているので、ログをJSON形式の文字列にしたいならば、いじる箇所はフォーマッタとなります。

Quickstartを参考に、JSON形式のログ出力

nhairs.github.io

以下の記事で扱ったHTTPXのロガーにJSONFormatterを設定します。

{"levelname": "INFO", "asctime": "2025-06-23 22:54:49", "name": "httpx", "message": "HTTP Request: GET https://peps.python.org/api/peps.json \"HTTP/1.1 200 OK\""}

ログ出力がJSON形式です!

従来のフォーマッタに渡すようにfmt引数で文字列を渡すと、その文字列に含まれるログレコードのフィールドを取り出してJSON形式で出力してくれます。
ref: https://nhairs.github.io/python-json-logger/latest/quickstart/#required-fields
インターフェース揃ってる!

動作環境情報

過去記事のHTTPXは公開日から判断して 0.27.0 と思われますが、そこから今回の 0.28.1 の間に DEBUG ログの削除があったようです。

終わりに

存在を聞いていた python-json-logger を試して、ログ出力がJSON形式になることを確認しました。
今回はQuickstartの拾い読みですが、Cookbookも合わせて読むとスムーズに使い出せそうでした。

シンプル(=組合せ可能)なloggingモジュールの思想を汲む、小さな素敵ライブラリという印象です🤗

代案:structlogもある

PyCon mini Shizuokaでは設定が重厚と聞いていました。

積み動画アーカイブです




以上の内容はhttps://nikkie-ftnext.hatenablog.com/entry/python-json-logger-formatter-for-json-logging-quickstartより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14