Apache Log 格式时间戳无法获取时区偏移量

Posted

技术标签:

【中文标题】Apache Log 格式时间戳无法获取时区偏移量【英文标题】:Apache Log format timestamp unable to get timezone offset 【发布时间】:2017-01-06 03:27:15 【问题描述】:
LogFormat " \
        \"@timestamp\": \"%%Y-%m-%dT%H:%M:%S%Zt\", \
        \"@version\": \"1\", \
        \"clientip\": \"%a\", \
        \"status\": %>s, \
        \"bytes\": %B, \
        \"request\": \"%U%q\", \
        \"referer\": \"%Refereri\", \
        \"useragent\": \"%User-agenti\" \
        " combinedJSON

输出时间戳的名称而不是 +0400 例如:

"@timestamp": "2016-08-29T16:50:37 Pacific Daylight Time", 

应该是:

"@timestamp": "2016-08-29T16:50:37 -0700",  

有没有办法提取时区偏移而不是时区名称?

【问题讨论】:

【参考方案1】:

在 linux 的 strftime() 上,偏移量是小写的“z”。您使用了大“Z”,它是时区名称/缩写。

(mod_log_config 只是将格式传递给系统 strftime,因此它不能真正记录值)

【讨论】:

我尝试同时使用小写和大写。在 Windows 机器上也是如此。 Wndows 上的 strftime 手册说它无法提供时区偏移量。当您根本不提供任何模式时,mod_log_config 可以显示它,但它与您的模式不完全匹配。如果不增强 mod_log_config 以仅提供 TZ 偏移量,恐怕这里没有解决方案。 这对我有用LogFormat "%%Y-%m-%d %H:%M:%S %zt(CentOS 8.4 上的 Apache 2.4.6)

以上是关于Apache Log 格式时间戳无法获取时区偏移量的主要内容,如果未能解决你的问题,请参考以下文章

给定 UTC 时间戳和 UTC 偏移量,是不是可以在 Python 中获取时区?

BigQuery 在解析时无法识别时区

Python - 给定时间戳UTC和UTC偏移量的时区名称

JS:如何获取时区

.NET 通过时区名称获取时区偏移量

PostgreSQL 中的本地时区偏移量