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


11

我想在我的ErrorLog中添加虚拟主机名,然后将其通过管道传递到我编写的程序中。

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


根据您的设置,每个虚拟主机都可以具有一个ErrorLog。它与统一的可分析日志文件不同,但是有点。
muffinista

Answers:


7

有关管道的信息,请参见ErrorLog指令和Piped Logs官方手册条目,它们对其进行了很好的解释。

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



6

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

句法: ErrorLogFormat [connection|request] format

简单的例子

ErrorLogFormat "[%t] [%l] [pid %P] %F: %E: [client %a] %M"

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

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

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

ErrorLogFormat "[%t] [%l] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i"

具有请求/连接日志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"

来源:ErrorLogFormat指令


谁能猜出为什么%a会出现空白?应该是客户端IP地址。我对此发表了一个问题
鲍勃·斯坦

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.