是否可以在 Apache 2.2 中创建自定义错误日志?

Joh*_*hnT 12 httpd logging errors apache-2.2

我想在我的 ErrorLog 中添加 vhost 名称,然后将其通过管道传输到我编写的程序中。

是否可以像访问日志一样编写自定义错误日志格式?

ues*_*esp 8

对于管道,请参阅ErrorLog指令和Piped Logs官方手册条目,它们很好地解释了它。

获取自定义错误日志格式更加困难。您可以轻松自定义访问日志,LogFormat但没有内置用于修改错误日志格式的内容。我确实遇到过CGI::Carp,它是一个用于输出到错误日志的 Perl 模块。最后,总是直接修改 Apache 源代码,这取决于您对该功能的需求程度。


小智 8

在 Apache 2.2 中,您无法轻松更改 error_log 的格式 - 请参阅http://httpd.apache.org/docs/2.2/logs.html#errorlog

Apache 2.4 添加了这种支持。请参阅http://httpd.apache.org/docs/2.4/logs.html#errorlog


小智 6

在 Apache 2.4 中,您可以使用该ErrorLogFormat指令。

句法: ErrorLogFormat [connection|request] format

简单的例子

ErrorLogFormat "[%t] [%l] [pid %P] %F: %E: [client %a] %M"
Run Code Online (Sandbox Code Playgroud)

示例(线程 MPM 的默认格式)

ErrorLogFormat "[%{u}t] [%-m:%l] [pid %P:tid %T] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i"
Run Code Online (Sandbox Code Playgroud)

示例(类似于 2.2.x 格式)

ErrorLogFormat "[%t] [%l] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i"
Run Code Online (Sandbox Code Playgroud)

带有请求/连接日志 ID 的高级示例

ErrorLogFormat "[%{uc}t] [%-m:%-l] [R:%L] [C:%{C}L] %7F: %E: %M"
ErrorLogFormat request "[%{uc}t] [R:%L] Request %k on C:%{c}L pid:%P tid:%T"
ErrorLogFormat request "[%{uc}t] [R:%L] UA:'%+{User-Agent}i'"
ErrorLogFormat request "[%{uc}t] [R:%L] Referer:'%+{Referer}i'"
ErrorLogFormat connection "[%{uc}t] [C:%{c}L] local\ %a remote\ %A"
Run Code Online (Sandbox Code Playgroud)

来源:ErrorLogFormat 指令