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 格式时间戳无法获取时区偏移量的主要内容,如果未能解决你的问题,请参考以下文章