Pythonのlogging
モジュールは、アプリケーションのデバッグやエラー追跡に非常に有用なツールです。この記事では、特に日時を使った詳細なログ出力に焦点を当てています。
ログ出力の基本
Pythonのlogging
モジュールでは、ログの出力形式を変更することで、ログの表現を自由に変えることができます。以下に基本的な使用例を示します。
import logging
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.DEBUG)
logger.info("hello")
logger.info("bye")
このコードを実行すると、以下のような出力が得られます。
INFO:__main__:hello
INFO:__main__:bye
ログ出力のフォーマットを変更する
ログ出力のフォーマットを変更するには、basicConfig
にformat
オプションを付けます。以下に例を示します。
import logging
logger = logging.getLogger(__name__)
fmt = "%(asctime)s %(levelname)s %(name)s :%(message)s"
logging.basicConfig(level=logging.DEBUG, format=fmt)
logger.info("hello")
logger.info("bye")
このコードを実行すると、以下のような出力が得られます。
2016-10-10 19:49:50,692 INFO __main__ :hello
2016-10-10 19:49:50,693 INFO __main__ :bye
このように、ログ出力に日時を含めることで、問題が発生したタイミングを特定しやすくなります。
ログ出力に追加情報を付ける
ログ出力に追加情報を付けるには、extra
オプションを使用します。以下に例を示します。
import logging
import random
logger = logging.getLogger(__name__)
fmt = "%(message)10s [who=%(who)s cost=%(cost).5f]"
logging.basicConfig(level=logging.DEBUG, format=fmt)
logger.info("hello", extra={"who": "foo", "cost": random.random() * 5})
logger.info("bye", extra={"who": "foo", "cost": random.random() * 5})
このコードを実行すると、以下のような出力が得られます。
hello [who=foo cost=2.48451]
bye [who=foo cost=0.79263]
このように、ログ出力に追加情報を付けることで、問題の原因を特定しやすくなります。
以上、Pythonのlogging
モジュールを使った日時を含む詳細なログ出力について説明しました。この機能を活用して、より効率的なデバッグを行いましょう。