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

Как указать Apache не регистрировать определенные запросы в журнале доступа

Я пытаюсь установить SetEnvIf переменная в apache2 и исключить ее в CustomLog чтобы мои журналы не заполнялись. Я хочу сопоставить регулярное выражение, а также определенные IP-адреса.

Я пытался следовать инструкциям, приведенным на сайте ниже, но похоже, что это не работает. http://www.howtoforge.com/setenvif_apache2

Предупреждение новичка: сайт не указывает, где разместить оператор SetEnvIf, поэтому я помещаю их в apache2.conf, а также в / sites-available / default.

Вот пример того, что я хочу отфильтровать в access.log:

    x.x.x.x - - [06/Sep/2014:15:02:35 -0500] "HEAD /dir/dir2/file1/file2.gif HTTP/1.1" 200 224 "-" "-"

    127.0.0.1 - - [06/Sep/2014:15:02:30 -0500] "GET /foo1/foo2.php? HTTP/1.0" 200 28956 "-" "Wget/1.12 (linux-gnu)"

Так что в apache2.conf и / сайты-доступные / по умолчанию, я поставил это:

    SetEnvIf Request_URI "HEAD /dir/" dontlog
    SetEnvIf Request_Addr "127\.0\.0\.1" dontlog
    SetEnvIf Request_Addr "::1" dontlog

И добавил env =! dontlog к существующим / по умолчанию / CustomLog запись:

    CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog

Затем я казнил apachectl изящный .

Ничего не меняется.

Фильтры нужно добавить только в один конфиг. Попробуйте удалить то, что вы добавили в apache2.conf, и оставьте все в / sites-available / default.

Например, если вы хотите отфильтровать поисковых роботов из своих журналов, конец вашего файла конфигурации будет выглядеть так:

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    # Filter all search bots from the access log.
    SetEnvIfNoCase User-Agent googlebot dontlog
    SetEnvIfNoCase User-Agent bingbot dontlog
    SetEnvIfNoCase User-Agent baiduspider dontlog

    # Custom Log location + options
    CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog
</VirtualHost>

Кроме того, когда вы делаете apachectl graceful, это может занять некоторое время. Если вы просто тестируете изменения, удалите файлы журналов, выполните apachectl изящно, и когда вы увидите, что файлы журналов воссоздаются заново, вы узнаете, что они заполняются с использованием указанных вами новых параметров фильтра.