Назад | Перейти на главную страницу

Как отключить журнал Apache только для SVN

У меня есть Apache, работающий как HTTP-сервер, а также SVN-сервер, который доставляется той же машиной Apache.

Настроен с чем-то вроде

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

Как я могу запретить Apache регистрировать все запросы доступа SVN «PROPFIND» и «OPTIONS»?

Это похоже на метод Rewrite, но просто использует директивы SetEnvIf для маркировки запросов OPTIONS и PROPFIND в соответствующем виртуальном хосте, затем мы добавляем правило env в журнал доступа, чтобы исключить их из журнала доступа.

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

Мы пошли по этому пути для системы непрерывной сборки, которая выполняла чрезмерный опрос. На самом деле мы работаем над изменением ситуации, чтобы использовать перехватчики SVN после фиксации для уведомления системы сборки об изменениях.

Я думал, что это невозможно сделать, но оказалось, что это возможно. Директива CustomLog может проверять наличие переменной среды, чтобы решить, регистрировать запрос или нет. Объедините это с mod_rewrite, чтобы установить эту переменную среды, и я думаю, у вас есть то, что вы ищете.

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

Я не проверял это. Однако из того, что я читаю в документации, это должно работать.

Вы должны иметь возможность добавить:

ErrorLog /dev/null
CustomLog /dev/null combined

К любому контейнеру vhost, который вы используете. Если вы не используете виртуальный хост для SVN, вам может быть сложно это сделать.