我有一个使用Python日志记录模块进行日志记录的Jython脚本。在一台机器上,脚本记录正常,另一台记录的时间在未来五小时内转移。据推测这与GMT-5的机器有关。你认为这会导致这个问题?
以下是我创建日志记录对象的方法:
log = logging.getLogger("my_log")
log.setLevel(logging.DEBUG)
handler = logging.handlers.RotatingFileHandler(
log_file,
maxBytes=log_size,
backupCount=logs_count)
log_format = logging.Formatter("%(asctime)s:%(levelname)s:%(message)s")
handler.setFormatter(log_format)
handler.setLevel(logging.DEBUG)
log.addHandler(handler)
我确实看过log_format.converter
函数。我确实确保在有问题的机器上正确设置时间。我确实确保Python在Python shell中打印正确的时间。
编辑:如果我从Python shell(2.4.3)查看time.localtime()
,那么我会得到一个具有正确本地时间值的元组。如果我从Jython脚本(2.5.2RC1)中查看time.localtime()
,那么我会看到GMT中的时间。
答案 0 :(得分:1)
我想我发现了这个问题。显然Java本身时间错了,原因是在有问题的机器上Java没有正确设置时区。 /etc/profile.d/java.sh中的export TZ='US/East'
似乎解决了这个问题。
这花了我一些时间来弄清楚因为从shell输出date
输出正确的本地时间和时区信息。 Python也能够正确地找出时区。
谢谢你们!
答案 1 :(得分:0)
我会检查你获取时间戳的位置,以确保它是UTC格式,我会检查你移交时间戳的位置,以确保它实际上被库解释为UTC。
答案 2 :(得分:0)
log_format.converter
设置为什么?根据{{3}},默认为time.localtime
。如果您将其更改为time.gmtime
,则所有时间都将使用GMT。