我正在尝试使用Apache的CustomLog
指令来创建一些自定义日志文件,但无法使其正常工作.以下是我用于自定义日志的配置:
LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent CustomLog /var/log/apache2/jb_common common CustomLog /var/log/apache2/jb_referer referer
Apache在启动时创建这两个自定义日志文件,因此它肯定会看到CustomLog
指令,但它从不向这些文件写入任何内容; 但是,access.log
正在写入默认访问日志().
有任何想法吗?我在Ubuntu 8.10上运行Apache 2.2.
我对Ubuntu 9.10 Server和Apache 2.2.12也有同样的问题.我正在设置一个Subversion服务器,mod_dav_svn
并添加了一个CustomLog
指令来/etc/apache2/mods-available/dav_svn.conf
记录Subversion请求,但遇到了同样的问题(日志文件是在Apache启动时创建的,但从未写入):
... LogFormat "%t %u %{SVN-ACTION}e" svn_log CustomLog /var/log/apache2/svn_access.log svn_log env=SVN-ACTION
我找到的问题有两种解决方法,基本上相同.我在这里记录,因为它们有不同的优点和缺点.
CustomLog
如果在单独的配置文件中设置了指令,请从配置文件中删除该指令.
将CustomLog
指令添加到您网站的VirtualHost
条目中.对我来说这是/etc/apache2/sites-available/default-ssl
因为我只允许SSL访问Subversion存储库.如果您正在使用/etc/apache2/sites-available/default
,则需要编辑该文件(或者default-ssl
如果您同时使用这两个文件).
重启Apache:
sudo /etc/init.d/apache2 restart
临
您可以CustomLog
在VirtualHost
网站的条目中包含多个指令,它们都可以正常工作.
精读
您必须将您的CustomLog
条目移动到您网站的VirtualHost
条目中,而不是将其放在单独的配置文件中.
注释掉CustomLog
在您的网站的指令(S)VirtualHost
输入.如果您正在使用其中一个默认站点配置(default
或default-ssl
),那么CustomLog
您将需要注释掉访问日志的指令(是的,这会关闭Apache的默认访问日志记录).
将CustomLog
指令添加到适当的配置文件中.对我来说这是/etc/apache2/mods-available/dav_svn.conf
.
重启Apache:
sudo /etc/init.d/apache2 restart
临
您可以将CustomLog
指令保存在单独的配置文件中.
精读
这种解决方法有一个明显的缺点,你必须禁用Apache的默认访问日志记录,但对我来说,我并不在乎,因为我只使用服务器进行Subversion访问.
这些变通办法都不是真正理想的,但到目前为止,除了上面的两个变通办法之外,我还没有办法让它工作.我想我们将不得不等待Apache的下一个版本才能解决这个问题.