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を使って日本時間でログを出力する方法です。この設定を利用すれば、どのタイムゾーンにいても日本時間でのログ出力が可能となります。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です