我查看了(快速阅读)Apache模块mod_log_config,但无法弄清楚Apache2的默认日志格式以及它在哪里定义。有什么想法吗?
请注意,这是关于什么的问题。
请注意,这是关于什么的问题。
不是默认选项,而是全局选项。/etc/apache2/conf.d/other-vhosts-access-log
不是默认选项,而是全局选项。/etc/apache2/conf.d/other-vhosts-access-log
/etc/apache2/apache2.conf
LogFormat
指令。LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
/etc/apache2/sites-available/000-default.conf
在里面,你会发现它声明:
CustomLog ${APACHE_LOG_DIR}/access.log combined
"%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\""
接下来是LogFormat语句:这个指令与CustomLog指令具有完全相同的参数和效果,唯一的区别是它不允许显式地指定日志格式或根据条件记录请求。取而代之的是,日志格式由最近指定的不定义昵称的LogFormat指令确定。如果没有指定其他格式,则使用常见日志格式。
因此,如果给出一个没有任何LogFormat语句的TransferLog语句,则输出格式如上所述。默认值:LogFormat "%h %l %u %t \"%r\" %>s %b"
默认的LogFormat确实很好
Default: LogFormat "%h %l %u %t \"%r\" %>s %b"
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
%b
("响应大小(以字节为单位),不包括HTTP头。在CLF格式中,即当没有发送任何字节时,使用'-'而不是0。")变成了现在的%O
("发送的字节数,包括头部。在极少数情况下可能为零,例如在请求发送响应之前被中止的情况下。您需要启用mod_logio才能使用此功能。")。 - Jeff Puckett