当前位置:  开发笔记 > 运维 > 正文

为什么我不能让Apache的CustomLog指令工作?

如何解决《为什么我不能让Apache的CustomLog指令工作?》经验,为你挑选了1个好方法。

我正在尝试使用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.



1> Mike Spross..:

我对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

我找到的问题有两种解决方法,基本上相同.我在这里记录,因为它们有不同的优点和缺点.

解决方法1

    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

您可以CustomLogVirtualHost网站的条目中包含多个指令,它们都可以正常工作.

精读

您必须将您的CustomLog条目移动到您网站的VirtualHost条目中,而不是将其放在单独的配置文件中.

解决方法2

    注释掉CustomLog在您的网站的指令(S)VirtualHost输入.如果您正在使用其中一个默认站点配置(defaultdefault-ssl),那么CustomLog您将需要注释掉访问日志的指令(是的,这会关闭Apache的默认访问日志记录).

    CustomLog指令添加到适当的配置文件中.对我来说这是/etc/apache2/mods-available/dav_svn.conf.

    重启Apache:

sudo /etc/init.d/apache2 restart

您可以将CustomLog指令保存在单独的配置文件中.

精读

这种解决方法有一个明显的缺点,你必须禁用Apache的默认访问日志记录,但对我来说,我并不在乎,因为我只使用服务器进行Subversion访问.

结论

这些变通办法都不是真正理想的,但到目前为止,除了上面的两个变通办法之外,我还没有办法让它工作.我想我们将不得不等待Apache的下一个版本才能解决这个问题.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有