Логи в Apache
Каждому из нас хочется побыть "большим братом" и последить за своими посетителями. Это можно делать по-разному: поставить счетчик, например, HotLog, поставить особый скрипт, ну а некоторые делают это с помощью логов Apache. Да-да, вы не ослышались, Apache тоже ведет логи.
На практике необходимо понять значение всего двух директив: LogFormat и CustomLog. Есть еще директива ErrorLog, но лично я использую лог ошибок только для просмотра последних строчек, когда Apache не пускается. Все-таки скажу несколько слов о ErrorLog.
Сами разработчики считают лог ошибок сервера, создающийся директивой ErrorLog, и хранящий все сообщения об ошибках и всю диагностику, наиболее важным логом. Не верьте им. Еррор-лог создается так:
ErrorLog logs/error_log
Практически никак не настраивается, однако есть важная директива LogLevel. Она дает указания серверу писать или не писать в лог ошибки различной степени тяжести. Например, директива
LogLevel emerg
Заставит сервер жаловаться только на самые критические проблемы, когда сервер не запускается. Далее параметры по убывающей: alert, crit, error, warn, notice, info и, конечно же, мой любимый
LogLevel debug
При котором вам будет рассказано даже о том, что сервер все-таки открывает в данный момент файл конфигурации :)
Таким образом, если вам нужны логи ошибок, то в httpd.conf следует указать директиву ErrorLog с параметром "имя лога" (путь считается относительно ServerRoot) и LogLevel с параметром "степень точности". Далее все на вашей совести :)
Теперь о том, что считаю важным я: Combined Logs. Эти логи повествуют о том, кто, когда и зачем отправлял запросы к серверу. Правда, интересно? Здесь еще две директивы: LogFormat и CustomLog. Покопайтесь в каком-нибудь httpd.conf и вы обязательно увидите там что-нибудь типа
LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog logs/access_log common
Хех, все понятно? Сейчас объясню что это значит. LogFormat принимает два параметра: описание формата лога и название этого формата. Как видите, лог, состоящий из "%h %l %u %t \"%r\" %>s %b" называется common. А что значат закорючки, читайте тут:
%h - IP клиента. Кстати, это запросто может быть и ип его прокси.
%l - это что-то непонятное, касающееся идентификации клиента по RFC 1413. Кстати, апач не пытается ее определить, если только директива IdentityCheck не установлена в On
%u - то, что было введено в качестве имени пользователя а HTTP-авторизации. То же самое, что и $HTTP_AUTH_USER :)
%t - время поступления запроса. В комментариях не нуждается.
%r - строка запроса клиента, например "GET /xxx.gif HTTP/1.1". Обычно заключается в кавычки, но поскольку кавычки - спецсимволы, они предваряются бэкслэшами - \. Таким образом, то, что будет выглядеть в логе как строчка в кавычках, оформляется так: \"%r\"
%>s - код ответа сервера клиенту.
%b - размер ответа клиенту. В байтах.
%{Referer} - адрес страницы, откуда пришел посетитель.
%{User-agent} - тип браузера посетителя. Этот и предыдущий параметр тоже обычно указывают в кавычках, как и %r
Эти параметры можно комбинировать в любом порядке и в любом количестве. Захотите определять только IP посетителей - пишете так:
LogFormat "%h" iponly
Вот и определен новый формат лога. В общем, комбинируйте как хотите. Но логи эта директива не создает. Чтобы сервер начал писать лог, надо потребовать этого директивой CustomLog, которая принимает два параметра: имя файла лога и его тип. Таким образом, чтобы записывать IP клиентов, надо добавить еще и такую строчку:
CustomLog logs/iponly.log iponly
И только после этого лог начнет нормально вестись. Кстати, популярным считается стандарт "combined log", описывающийся так:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
Как видите, довольно информативно. А теперь на минуту представьте себе, что ваш сервер обрабатывает около миллиона запросов в день. И вам охота вести несколько логов. Ну это обычное явление: сколько скажете раз CustomLog, столько логов и создастся, а ну как вам захочется всех поисковиков, ищущих robots.txt писать в отдельный лог? Ладно. Рассказываю.
Есть еще такая полезная директива SetEnvIf (или SetEnvIfNoCase - то же самое, но без учета больших/маленьких букв), она позволяет в зависимости от условия определять переменные среды. Например:
SetEnvIf Request_URI "^robots\.txt$" crawler
После этого переменная env будет равняться "crawler". Но это еще не все! В зависимости от значения этой переменной вы можете делать запись в разные логи! Вот так:
CustomLog logs/crawlers combined env=crawler CustomLog logs/clients combined env=!crawler
Вот так, нашему апачу палец в рот не клади :) Не буду рассказывать почему robots.txt так странно написано, называется это регулярные выражения, а почитать про них можно либо в учебнике, либо в странице мануала перла по имени perlre. Вот так: man perlre. Под юниксом, конечно :)
Уфф... Все, вроде? Нет, есть еще пипы. Пипы (pipes) позволяют предварительно (прежде чем чего-то в логи записать), что-нибудь эдакое с ними сотворить, например сжать. Стандартный значок пипы в юниксе - вертикальная палка, так что если вам приспичит логи сразу сжимать, делайте так:
CustomLog "|/usr/bin/gzip -c >> /var/log/access_log.gz" common
Все под юниксом :) Просто потому, что если у вас апач на винде, то логи вести незачем - врядли она у вас сервером работает %)
P.S. Большая часть этого материала - вольный перевод соотвествующих статей из Apache Manual. Он лежит здесь: http://httpd.apache.org.
P.P.S. Счастья вам и радости!
P.P.P.S. Ах, да... удобно, если надо что-то проверить в работе сервера, следить за логом в "реальном времени", вот так:
$ tail -f /etc/httpd/logs/logfile


Поделиться статьей:
Акция: Закажи любой сайт до окончания акции и получи скидку + подбор семантического ядра + поисковую оптимизацию сайта Это позволит Вам получать еще больше трафика и соответственно клиентов из Интернета!
До конца акции осталось
0
5
4
3
2
1
0
0
9
8
7
6
5
4
3
2
1
0
0
5
4
3
2
1
0
0
9
8
7
6
5
4
3
2
1
0
0
9
8
7
6
5
4
3
2
1
0
0
9
8
7
6
5
4
3
2
1
0
|
Узнайте подробности акции у менеджеров компании по телефонам: 8-924-200-7194 г.Хабаровск 8-800-550-9899 Бесплатно по России (с 2:30 до 11:30 по Мск) |
Новые статьи и публикации
- 2023-01-26 » Установка и настройка Call tracking и Email tracking
- 2022-11-09 » 12 работающих формул продающих текстов
- 2022-11-09 » Дизайн сайта как SEO фактор ранжирования в 2022. Неочевидные нюансы в дизайне
- 2022-09-06 » Яндекс выложил в опенсорс фреймворк для ускорения разработки мобильных приложений
- 2022-08-18 » Как я могу перенаправить и переписать свои URL-адреса с помощью файла .htaccess?
- 2022-08-01 » Яндекс выложил в опенсорс исходный код и документацию фреймворка userver
- 2022-07-29 » Как выявить медленные SQL запросы?
- 2022-07-29 » Читали мое письмо или нет? Как проверить с помощью php — Записки программиста
- 2022-07-26 » Я потратил 30 дней на анализ лучших кнопок призыва к действию, которые смог найти в Интернете
- 2022-06-29 » ТОП-15 актуальных трендов интернет-маркетинга для России: эксперт рассказал о тенденциях рынка в 2022 году
- 2022-06-21 » Почему «99 франков» — это не лучшая ценовая стратегия, и как теперь «рисовать» привлекательные цены
- 2022-06-16 » Пушкинская карта и Культура.РФ на Вашем сайте. Подключим к действующему сайту и(или) сделаем новый!
- 2022-05-18 » Анализ рынка интернет-маркетинга в РФ от Яндекс Дзен
- 2022-05-18 » Итоги развития рекламного рынка РФ за 2021 год по версии АКАР
- 2022-05-18 » Потребление мобильного трафика в Рунете достигло рекордных значений
- 2022-05-17 » Yappy, TenChat и другие. Обзор новых русских соцсетей и их возможностей
- 2022-05-17 » Реклама малого бизнеса. Разбор доступных каналов, инструментов аналитики и терминов
- 2022-05-16 » Зачем нужен счетчик Top@Mail.ru и как установить на сайт пиксель myTarget
- 2022-04-25 » Несмотря на отсутствие блокировки: в Youtube потеряли более 20% активных русскоязычных авторов
- 2022-04-25 » Чат-бот – что это такое
- 2022-04-19 » Комплексная услуга по разработке сайта или Интернет-магазина БЕСПЛАТНО!!!
- 2022-03-17 » Импорт большого дампа БД в OpenServer через консоль
- 2022-02-25 » Возможности и преимущества Google Analytics 4
- 2022-02-20 » Интеграция Интернет-магазинов и сайтов с маркетплейсами в несколько кликов – РЭДЛАЙН! ыходи на Маркетплейсы — кратно увеличь свои продажи!
- 2022-01-26 » Анализ и отслеживание конверсий
- 2022-01-26 » Создаем сайты на Тильде с маркетинговой проработкой!
- 2022-01-26 » Разработка сайтов на Wordpress "под ключ"
- 2022-01-18 » Основные UX-тренды 2022 года
- 2021-12-24 » Как увеличить продажи перед Новым годом
- 2021-12-23 » Ключевые запросы − основа эффективного продвижения
Предоставляем полный комплекс услуг по созданию, обслуживанию и продвижению сайтов по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.