1. ホーム
  2. パイソン

[解決済み】Pythonのロギングで時間フォーマットをカスタマイズする方法は?

2022-04-03 21:42:58

質問

私はPythonのloggingパッケージの初心者ですが、私のプロジェクトに使用する予定です。私は自分の好みに合わせて時間のフォーマットをカスタマイズしたいと思います。以下は、私がチュートリアルからコピーした短いコードです。

import logging

# create logger
logger = logging.getLogger("logging_tryout2")
logger.setLevel(logging.DEBUG)

# create console handler and set level to debug
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)

# create formatter
formatter = logging.Formatter("%(asctime)s;%(levelname)s;%(message)s")

# add formatter to ch
ch.setFormatter(formatter)

# add ch to logger
logger.addHandler(ch)

# "application" code
logger.debug("debug message")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
logger.critical("critical message")

そして、その出力がこちらです。

2010-07-10 10:46:28,811;DEBUG;debug message
2010-07-10 10:46:28,812;INFO;info message
2010-07-10 10:46:28,812;WARNING;warn message
2010-07-10 10:46:28,812;ERROR;error message
2010-07-10 10:46:28,813;CRITICAL;critical message

時間のフォーマットを短くし、' 2010-07-10 10:46:28 というように、ミリ秒のサフィックスを削除しています。Formatter.formatTimeを見ましたが、混乱しています。私の目標を達成するためにあなたの助けを感謝します。ありがとうございます。

解決方法を教えてください。

からの 公式ドキュメント Formatter クラスに関するものです。

コンストラクタは、メッセージフォーマット文字列と日付フォーマット文字列の2つのオプション引数を取ります。

だから変更

# create formatter
formatter = logging.Formatter("%(asctime)s;%(levelname)s;%(message)s")

になります。

# create formatter
formatter = logging.Formatter("%(asctime)s;%(levelname)s;%(message)s",
                              "%Y-%m-%d %H:%M:%S")