温馨提示×

Apache日志格式如何修改

小樊
39
2026-08-05 13:49:54
栏目: 编程语言

Apache 的日志格式主要通过 LogFormatCustomLog 指令来修改,一般在 主配置文件虚拟主机配置 中设置。下面按常见场景说明。


一、日志格式在哪里配置

常见配置文件位置:

  • CentOS / RHEL / Rocky / Alma

    /etc/httpd/conf/httpd.conf
    /etc/httpd/conf.d/*.conf
    
  • Ubuntu / Debian

    /etc/apache2/apache2.conf
    /etc/apache2/sites-enabled/*.conf
    

二、查看默认日志格式

Apache 默认一般有:

LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
  • common:简单格式
  • combined:最常用(含 Referer 和 User-Agent)

三、修改日志格式(示例)

1️⃣ 自定义一个新的日志格式

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D" mylog

说明:

  • %h:客户端 IP
  • %t:时间
  • %r:请求行
  • %>s:状态码
  • %b:响应大小
  • %D:请求耗时(微秒)
  • %{User-Agent}i:浏览器信息

2️⃣ 在虚拟主机中使用自定义格式

<VirtualHost *:80>
    ServerName www.example.com
    DocumentRoot /var/www/html

    CustomLog /var/log/apache2/access.log mylog
    ErrorLog /var/log/apache2/error.log
</VirtualHost>

四、修改已有日志格式(不改名字)

直接修改 LogFormat

LogFormat "%h %t \"%r\" %>s %b %D" combined

然后重启 Apache:

# CentOS / RHEL
systemctl restart httpd

# Ubuntu / Debian
systemctl restart apache2

五、常见日志变量速查

变量 含义
%h 客户端 IP
%l 远程日志名(通常为 -
%u 认证用户
%t 时间
%r 请求行
%>s HTTP 状态码
%b 响应大小
%D 请求耗时(微秒)
%T 请求耗时(秒)
%{User-Agent}i 浏览器
%{Referer}i 来源页面
%{Cookie}i Cookie

六、按虚拟主机分开日志(推荐)

<VirtualHost *:80>
    ServerName a.example.com
    CustomLog /var/log/apache2/a_access.log combined
</VirtualHost>

<VirtualHost *:80>
    ServerName b.example.com
    CustomLog /var/log/apache2/b_access.log combined
</VirtualHost>

七、验证配置是否正确

apachectl -t

如果你愿意,可以告诉我:

  • ✅ Apache 版本
  • ✅ 系统(CentOS / Ubuntu)
  • ✅ 想记录哪些字段(如 IP、耗时、POST、Header)

我可以帮你 直接写一份可用的配置

0