如何在Apache 2.4.25错误日志中显示时区
解决Apache ErrorLogFormat时区显示与重复时间问题
我之前碰到过一模一样的情况!问题的核心在于Apache的ErrorLogFormat默认会自动追加一个时间前缀,而你直接沿用LogFormat里的%t系列时间格式时,相当于又手动输出了一次时间,自然就出现了重复的时间串。
具体解决步骤:
要实现错误日志显示带时区的正确时间格式,你需要先清空ErrorLogFormat的默认时间前缀,再自定义完整的格式:
- 修改Apache配置中的ErrorLogFormat:
ErrorLogFormat "%{%Y-%m-%dT%H:%M:%S}t.%{msec_frac}t%{%z}t %m %U %q %s %e"
这里的%{%Y-%m-%dT%H:%M:%S}t.%{msec_frac}t%{%z}t就是你在LogFormat中验证过的正确时间格式,后面的%m %U %q %s %e是示例的其他错误日志字段(比如请求方法、请求路径、查询参数、状态码、错误信息),你可以根据自己的需求调整或增减字段。
- 重启Apache服务:
配置修改后,重启Apache使设置生效,此时错误日志就会输出类似2018-02-08T10:07:46.161+0100 GET /test.php?debug=1 500 PHP Fatal error: Undefined variable...的格式,时间带时区且没有重复。
补充说明:
LogFormat之所以能正常工作,是因为它默认不会自动添加时间前缀,所有字段都需要你手动定义;而ErrorLogFormat的默认配置自带了时间前缀,这是两者的核心差异,也是导致重复时间的根本原因。
内容的提问来源于stack exchange,提问作者luki
相关产品推荐
相关产品推荐

