You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Apache 2.4.25错误日志中显示时区

解决Apache ErrorLogFormat时区显示与重复时间问题

我之前碰到过一模一样的情况!问题的核心在于Apache的ErrorLogFormat默认会自动追加一个时间前缀,而你直接沿用LogFormat里的%t系列时间格式时,相当于又手动输出了一次时间,自然就出现了重复的时间串。

具体解决步骤:

要实现错误日志显示带时区的正确时间格式,你需要先清空ErrorLogFormat的默认时间前缀,再自定义完整的格式:

  1. 修改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是示例的其他错误日志字段(比如请求方法、请求路径、查询参数、状态码、错误信息),你可以根据自己的需求调整或增减字段。

  1. 重启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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:25:14