如何仅为 SVN 禁用 Apache 日志

如何仅为 SVN 禁用 Apache 日志

我有一个作为 HTTP 服务器运行的 Apache,还有一个由同一台 Apache 机器提供的 SVN 服务器。

配置如下

<Location /repos>
      DAV svn
      SVNParentPath /srv/repos
</Location>

如何防止 Apache 记录所有 SVN“PROPFIND”和“OPTIONS”访问请求?

答案1

我以为没有办法做到这一点,但结果发现可能有。 CustomLog 指令可以查找环境变量的存在,以决定是否记录请求。 将它与 mod_rewrite 结合起来设置该环境变量,我想您已经找到了想要的东西。

RewriteEngine On
RewriteCond %{REQUEST_METHOD} '^(OPTIONS|PROPFIND)$'
RewriteRule ^/repos - [E=skiplog:1]
CustomLog /log/file/path common env=!skiplog

我还没有测试过。不过从我读到的文档来看,这应该可行。

答案2

这与 Rewrite 方法类似,但只是使用 SetEnvIf 指令在相关的 vhost 中标记 OPTIONS 和 PROPFIND 请求,然后我们将 env 规则添加到访问日志以将它们从访问日志中排除。

SetEnvIf Request_Method "OPTIONS" dontlog
SetEnvIf Request_Method "PROPFIND" dontlog
CustomLog /path/to/access_log combined env=!dontlog

我们采用了这种方式来构建一个进行过度轮询的持续构建系统。实际上,我们正在努力改变现状,使用 SVN 提交后钩子来通知构建系统变更。

答案3

您应该能够添加:

ErrorLog /dev/null
CustomLog /dev/null combined

无论您使用什么 vhost 容器。如果您没有为 SVN 使用 vhost,那么执行此操作可能会很困难。

相关内容