Jython日志记录时间错误

时间:2010-12-16 17:05:07

标签: python logging timestamp jython

我有一个使用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中的时间。

3 个答案:

答案 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。