Почему я не могу заставить работать директиву Apache CustomLog? - PullRequest
10 голосов
/ 08 февраля 2009

Я пытаюсь использовать директиву 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) записывается в.

Есть идеи? Я использую Apache 2.2 в Ubuntu 8.10.

1 Ответ

13 голосов
/ 10 января 2010

У меня такая же проблема с Ubuntu 9.10 Server и Apache 2.2.12. Я настраиваю сервер Subversion с mod_dav_svn и добавляю директиву CustomLog к /etc/apache2/mods-available/dav_svn.conf для регистрации запросов Subversion, но у меня возникла та же проблема (файл журнала был создан при запуске Apache, но никогда не записывался):

<Location /svn>
  ...
</Location>

LogFormat "%t %u %{SVN-ACTION}e" svn_log
CustomLog /var/log/apache2/svn_access.log svn_log env=SVN-ACTION

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

Обходной путь 1

  1. Удалите директиву CustomLog из файла конфигурации, если она настроена в отдельном файле конфигурации.

  2. Добавьте директиву CustomLog к записи VirtualHost вашего сайта. Для меня это было в /etc/apache2/sites-available/default-ssl, потому что я разрешаю только SSL доступ к хранилищу Subversion. Если вы используете /etc/apache2/sites-available/default, вместо этого вы захотите отредактировать этот файл (или в дополнение к default-ssl, если вы используете оба).

  3. Перезапустите Apache:

sudo /etc/init.d/apache2 restart

Pro

В записи VirtualHost для вашего сайта может быть несколько директив CustomLog, и все они будут работать.

Con

Вы должны переместить свою запись CustomLog в запись VirtualHost вашего сайта вместо того, чтобы поместить ее в отдельный файл конфигурации.

Обходной путь 2

  1. Прокомментируйте директивы CustomLog в записи VirtualHost вашего сайта. Если вы используете одну из конфигураций сайта по умолчанию (default или default-ssl), для журнала доступа будет указана директива CustomLog, которую вам нужно будет закомментировать (да, это отключает ведение журнала доступа по умолчанию в Apache ).

  2. Добавьте директиву CustomLog в соответствующий файл конфигурации. Для меня это было /etc/apache2/mods-available/dav_svn.conf.

  3. Перезапустите Apache:

sudo /etc/init.d/apache2 restart

Pro

Вы можете хранить директиву CustomLog в отдельном файле конфигурации.

Con

Этот обходной путь имеет очевидный недостаток, заключающийся в том, что вам необходимо отключить ведение журнала доступа по умолчанию в Apache, но мне все равно, так как я использую сервер только для доступа к Subversion.

Заключение

Ни один из этих обходных путей на самом деле не идеален, но до сих пор я не нашел способа заставить его работать иначе, чем два вышеупомянутых обходных пути. Я полагаю, нам придется подождать следующего выпуска Apache, чтобы исправить эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...