PythonのLoggerを使って日本時間でログを出力する方法について説明します。
Loggerの設定
まずは、Loggerの設定を行います。以下のコードはLoggerの基本的な設定を示しています。
import logging
from pytz import timezone
from datetime import datetime
# loggerに命名する. この名前で呼び出すことで他のモジュールにも以下の設定が引き継がれる.
logger = logging.getLogger("example")
logger.setLevel(logging.DEBUG)
# コンソールに出力するハンドラの設定
sh = logging.StreamHandler()
sh.setLevel(logging.DEBUG)
def customTime(*args):
return datetime.now(timezone('Asia/Tokyo')).timetuple()
formatter = logging.Formatter(
fmt='%(levelname)s : %(asctime)s : %(message)s',
datefmt="%Y-%m-%d %H:%M:%S %z"
)
formatter.converter = customTime
sh.setFormatter(formatter)
# ファイルに出力するハンドラの設定
fh = logging.FileHandler("logs/example.log")
fh.setLevel(logging.DEBUG)
def customTime(*args):
return datetime.now(timezone('Asia/Tokyo')).timetuple()
formatter = logging.Formatter(
fmt='%(levelname)s : %(asctime)s : %(message)s',
datefmt="%Y-%m-%d %H:%M:%S %z"
)
formatter.converter = customTime
fh.setFormatter(formatter)
logger.addHandler(sh)
logger.addHandler(fh)
この設定により、ログはコンソールとlogs/example.log
という名前のファイルに出力されます。また、ログのレベルはDEBUGに設定されています。
日本時間でのログ出力
上記の設定では、ログの出力時間は日本時間(JST)で表示されます。これは、customTime
関数により、現在の日本時間を取得しているからです。
以上がPythonのLoggerを使って日本時間でログを出力する方法です。この設定を利用すれば、どのタイムゾーンにいても日本時間でのログ出力が可能となります。