WordPress在PHP错误日志中使用UTC / GMT作为其所有时间戳。我想在本地服务器时区中有时间戳。在WP设置中更改时区没有帮助;这会影响时间显示,但不会影响错误日志中的时间戳。
(我知道wp_settings.php文件中有一行设置了这一行,我知道更改该设置会混淆部分使用UTC编码的WP代码。)
我已经看过覆盖PHP error_log函数来解析时间并替换它,但我发现需要额外安装的两种方法(APD或Runkit)。据我了解,这些只适用于DEV环境,所以我不想搞砸它们。
有关如何让WP将本地时区标记写入错误日志的任何建议吗?
答案 0 :(得分:1)
以UTC格式记录时间是有原因的。许多时区都使用daylight saving time。对于那些区域,春天有一个小时被跳过,一个小时在秋天被重复。如果您使用本地时间进行记录,则无法轻松消除重复值之间的歧义。
例如,如果您在美国东部时区("America/New_York"
)并且使用当地时间记录,则值为2014-11-02 01:30:00可能意味着东部时间为1:30白天时间,或东部标准时间的1:30 - 一小时后。
如果您经常登录,您可以通过比较附近日志条目中其他项目的时间戳来检测到这一点。但总的来说,这不是一个很好的解决方案,因为您可能只是偶尔记录,或者您可能不希望一次分析多个日志条目的开销。
除了夏令时外,还有一个问题是,如果您从多个服务器获取日志文件,它们应该能够统一比较。也许我在美国东海岸和西海岸有一个网络服务器,一个在欧洲,一个在日本。如果我的全球流量出现飙升 - 我不应该进行时区转换来排队。
如果您确实必须登录当地时间 - 请考虑包括UTC的偏移量和时间戳。这在某些语言中称为“DateTimeOffset”,也是ISO-8601标准的一部分。例如,"2014-06-20T01:23:45-07:00"
。通过这样做,您至少可以转换回UTC并消除夏令时造成的任何歧义。
我不知道是否有以这种方式使用WordPress或PHP登录的特定方式,但也许其他人可以将其作为单独的答案提供。