31

ログ ファイルのタイムスタンプを変更して、現在のタイム ゾーンを反映し、エラーをより迅速にデバッグできるようにしたいと考えています。

ログ ファイルのタイム ゾーンを変更することはできますか?

現在、私の設定は次のとおりです。

logging.basicConfig(filename='audit.log',
                filemode='w',
                level=logging.INFO,
                format='%(asctime)s %(message)s',
                datefmt='%m/%d/%Y %I:%M:%S %p')
4

7 に答える 7

17
#!/usr/bin/env python
from datetime import datetime
import logging
import time

from pytz import timezone, utc


def main():
    logging.basicConfig(format="%(asctime)s %(message)s",
                        datefmt="%Y-%m-%d %H:%M:%S")
    logger = logging.getLogger(__name__)
    logger.error("default")

    logging.Formatter.converter = time.localtime
    logger.error("localtime")

    logging.Formatter.converter = time.gmtime
    logger.error("gmtime")

    def customTime(*args):
        utc_dt = utc.localize(datetime.utcnow())
        my_tz = timezone("US/Eastern")
        converted = utc_dt.astimezone(my_tz)
        return converted.timetuple()

    logging.Formatter.converter = customTime
    logger.error("customTime")

    # to find the string code for your desired tz...
    # print(pytz.all_timezones)
    # print(pytz.common_timezones)


if __name__ == "__main__":
    main()
  • 表向きは、pytzパッケージは Python でタイム ゾーンを変換するための恵まれた方法です。したがって、変換から始めて、メソッドの戻り値の型に一致datetimeする (不変) を取得します。time_tupletime
  • 関数の設定はlogging.Formatter.converter、この回答で推奨されています: ( Python logging: How to set time to GMT )。
  • 最後の行のコメントを外して、お気に入りの TZ コードを見つけます
于 2017-08-21T21:02:25.633 に答える