什么是默认的 apache2 日志格式,在哪里定义了这样的默认值?

7 configuration apache2 logging 12.04

我查看了(快速阅读)Apache 模块 mod_log_config并且无法弄清楚 apache2 默认日志格式是什么以及在哪里定义它。任何的想法?

请注意,什么是

/etc/apache2/conf.d/other-vhosts-access-log

不是默认选项而是全局选项。

Jef*_*ett 6

对于 Ubuntu 16.04,您可以在此处找到全局配置文件:

/etc/apache2/apache2.conf
Run Code Online (Sandbox Code Playgroud)

其中定义了一些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
Run Code Online (Sandbox Code Playgroud)

开箱即用的虚拟主机配置文件在这里:

/etc/apache2/sites-available/000-default.conf
Run Code Online (Sandbox Code Playgroud)

在里面你会发现它声明:

CustomLog ${APACHE_LOG_DIR}/access.log combined
Run Code Online (Sandbox Code Playgroud)

combined别名是指第二个LogFormat在上述全局配置:

"%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\""
Run Code Online (Sandbox Code Playgroud)


H.-*_*itt 5

TransferLog语句的文档中明确指出:

该指令与 CustomLog 指令具有完全相同的参数和效果,不同之处在于它不允许显式指定日志格式或对请求进行条件记录。相反,日志格式由最近指定的未定义昵称的 LogFormat 指令确定。如果未指定其他格式,则使用通用日志格式。

转到LogFormat语句:

默认值: LogFormat "%h %l %u %t \"%r\" %>s %b"

因此,如果在TransferLog没有任何LogFormat语句的情况下给出语句,则输出格式如上所述。

如果还TransferLog缺少该语句,则不会写入访问日志