О web-разработке
и даже немного больше...

Подробнее о логах в Apache

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

Традиционно Apache создает два основных типа лог-файлов, это error_log и access_log. Как можно понять по названию самих файлов в файл error_log будут журналироваться сообщения об ошибках, а в файл access_log – запросы на веб-сервер. Настраиваются лог файлы в конфигурационном файле веб-сервера Apache, путь к файлу error_log задаются директивой:

LogLevel notice
ErrorLog /var/log/httpd/error_log

Стоит отметить, что сообщения об ошибках в свою очередь делятся на уровни, и задаются директивой LogLevel.

Существуют следующие уровни ошибок:
emerg — фатальные ошибки;
alert — необходимо немедленно исправить ситуацию;
crit — критические ошибки;
error — обычные ошибки;
warn — предупреждения;
notice — уведомления;
info — информация;
debug — подробные уведомления для отладки.

В зависимости от операционной системы пути по умолчанию к файлу ErrorLog могут отличаться, некоторые из них:
RHEL / Red Hat / CentOS / Fedora Linux

/var/log/httpd/error_log

Debian / Ubuntu Linux Apache

/var/log/apache2/error.log

FreeBSD

/var/log/httpd-error.log

Второй тип файла лога – лог доступа access_log, устанавливается директивой CustomLog:

LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog /var/log/access_log common

Здесь так же можно настроить формат вывода сообщений в лог, за это отвечает директива LogFormat.
Рассмотрим значения, которые могут выводиться в лог файл access_log:

%a	# IP адрес клиента
%A	# IP адрес сервера
%B	# Размер ответа
%b	# Размер ответа без HTTP заголовков (только тело)
%{<var>Foobar</var>}C	# Значение Куки Foobar
%D	# Время обработки запроса в микросекундах
%{<var>FOOBAR</var>}e	# Значение переменной окружения FOOBAR
%f	# Название файла
%h	# Удаленный хост
%H	# Протокол запроса
%{<var>Foobar</var>}i	# Значение заголовка Foobar: в запросе
%k	# Количество keepalive запросов, обработанных в этом соединении
%m	# Метод запроса
%{<var>Foobar</var>}n	# Значение заметки Foobar из другого модуля
%{<var>Foobar</var>}o	# Значение заголовка Foobar: в ответе
%p	# Порт на сервере
%{<var>format</var>}p	# Порт canonical (сервера), local (текущий сервера) или remote (клиента)
%P	# ID дочернего процесса, который обслужил запрос
%q	# Строка запроса (query string)
%r	# Первая строка запроса
%R	# Обработчик, который генерирует ответ
%s	# Статус запроса
%t	# Время получения запроса
%{<var>format</var>}t	# Время получения запроса с форматом
%T	# Длительность обслуживания запроса в секундах
%u	# Удаленный авторизованный пользователь
%U	# Путь запроса без GET параметров
%v	# Значение ServerName
%X	# Статус соединения после окончания запроса:
	# "X" - соединение оборвалось перед окончанием запроса.
	# "+" - соединение осталось после отправки ответа (keepalive).
	# "-" - соединение закрыто после отправки ответа.
%I	# Количество полученных байт включая HTTP заголовки. Нужен mod_logio.
%O	# Количество отправленных байт.

Таким образом, формат вывода лога access_log может быть удобно настроен под ваши требования.
Пути по умолчанию к файлу access_log зависят от операционной системы, и могут быть следующие:

RHEL / Red Hat / CentOS / Fedora Linux

/var/log/httpd/access_log

Debian / Ubuntu Linux

/var/log/apache2/access.log

FreeBSD

/var/log/httpd-access.log

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

Опубликован: 06.08.2017 г.

См. также:

Как включить сжатие GZip в Nginx?
Ротация логов в Linux
Denwer в локальной сети
HTTP авторизация
Просмотр списка загруженных модулей Apache
httpd грузит процессор, что делать?
Тестирование сайта под нагрузкой
Как создать SSL сертификат на Apache для CentOS 6?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта