【问题标题】:WordPress - How do I set error log timestamp timezone to local?WordPress - 如何将错误日志时间戳时区设置为本地?
【发布时间】:2014-08-11 17:52:28
【问题描述】:

WordPress 在 PHP 错误日志中的所有时间戳都使用 UTC / GMT。我想拥有本地服务器时区的时间戳。在 WP 设置中更改时区无济于事;这会影响时间显示,但不会影响错误日志中的时间戳。

(我知道 wp_settings.php 文件中有一行设置了这个,我知道更改设置会弄乱硬编码为使用 UTC 的部分 WP 代码。)

我已经研究过重写 PHP error_log 函数来解析时间并替换它,但我发现这两种方法需要额外安装一些东西(APD 或 Runkit)。据我了解,这些仅适用于 DEV 环境,因此我不想与它们混淆。

关于如何让 WP 将本地时区标记写入错误日志的任何建议?

【问题讨论】:

    标签: php wordpress timezone error-log


    【解决方案1】:

    以 UTC 记录时间是有原因的。许多时区使用daylight saving time。对于这些区域,春季有一个小时被跳过,秋季有一个小时被重复。如果您要使用本地时间记录,则没有一种简单的方法可以消除重复值之间的歧义。

    例如,如果您在美国东部时区 ("America/New_York") 并使用本地时间登录,则 2014-11-02 01:30:00 之类的值可能表示东部夏令时间的 1:30 ,或东部标准时间的 1:30 - 一小时后。

    如果您记录的频率足够高,则可以通过比较附近日志条目中其他项目的时间戳来检测到这一点。但总的来说,这不是一个很好的解决方案,因为您可能只是偶尔记录,或者您可能不希望一次分析多个日志条目的开销。

    除了夏令时 - 还有一个问题是,如果您从多个服务器获取日志文件,它们应该能够进行统一比较。也许我在美国东海岸和西海岸有 Web 服务器,欧洲有一个,日本有一个。如果我的全球流量激增 - 我不应该进行时区转换来排队。

    如果您确实必须以本地时间登录 - 然后考虑将与 UTC 的偏移量连同时间戳一起包含在内。这在某些语言中称为“DateTimeOffset”,也是 ISO-8601 标准的一部分。例如,"2014-06-20T01:23:45-07:00"。通过这样做,您至少允许转换回 UTC 并消除由夏令时引起的任何歧义。

    我不知道是否有特定的方式让 WordPress 或 PHP 以这种方式登录,但也许其他人可以将其作为单独的答案提供。

    【讨论】:

    • 不幸的是,这是 WordPress 特有的。 WP 强制所有时间戳为 UTC,我们需要它是本地的。此应用程序只有一台服务器,因此无需担心要协调多个时区。 WordPress 使时间戳发生在 73 个不同的地方(至少在当前版本中),远远超过一个小技巧。希望WP专家对此有所了解。 :)
    猜你喜欢
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多