LINUX.ORG.RU
ФорумAdmin

Объединить error и access логи

 ,


0

1

Настроил вывод access логов примерно таким образом:

дата, id процесса, приоритет, хост, http-метод, url, querystring, user ip, useragent, remote user, status, bytes send, response time, handler

Как access логи меня всё устраивает, но хотелось бы, если при запросе произошла ошибка (например, ошибка php), дополнительно бы отображался текст ошибки.

Но проблема в том, что в Apache формат error-логов не кастомизируется и в сислог вылетает сухой текст ошибки (и хрен там знает, какой url был запрошен, какие данные были переданы и т.д.).

Можно ли как-то объединить access и error логи или кастомизировать вывод error-логов?

★★
Ответ на: комментарий от strangeman

Не :)

Логи идут в сислог, а уже он пишет их в файл и на удаленный сервак, который складывает их в БД.

Можно, конечно, и access и error в syslog пихать (сейчас так и делается), но т.к. access и error логи между собой никак не связаны, очень сложно понять, какой error лог с каким access'ом связан.

SaBo ★★
() автор топика
Ответ на: комментарий от SaBo

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

SaBo ★★
() автор топика
Ответ на: комментарий от SaBo

М.б. apache каждому запросу присваивает уникальный идентификатор или порядковый номер и тогда, если в syslog приходит error с таким идентификатором, то в БД рядом с access складывается текст ошибки... Ну или как-то так.

SaBo ★★
() автор топика
Ответ на: комментарий от SaBo

Да, уникальный ID Apache запросу выдает (mod_unique_id).
Осталось его в error log запихнуть...

SaBo ★★
() автор топика
Ответ на: комментарий от SaBo

Есть, конечно, такой модуль: mod_log_forensic.
Но что-то пока боязно его использовать: не понятно, как на уровне rsyslog объединять логи без костылей.

SaBo ★★
() автор топика

Как access логи меня всё устраивает, но хотелось бы, если при запросе произошла ошибка (например, ошибка php), дополнительно бы отображался текст ошибки.

ИМХО, ошибки php можно ( нужно ) писать в отдельный лог. Если есть необходимость их связать с запросом - пиши свой обработчик error_handler, а в нём вывод всего что захочешь - сообщение об ошибке, трейс, отдельные переменные ( в т.ч. URL, время и IP ) ...

router ★★★★★
()
Ответ на: комментарий от router

ИМХО, ошибки php можно ( нужно ) писать в отдельный лог. Если есть необходимость их связать с запросом - пиши свой обработчик error_handler, а в нём вывод всего что захочешь - сообщение об ошибке, трейс, отдельные переменные ( в т.ч. URL, время и IP ) ...

Почти соглашусь. Но почти :)
Apche'вская ошибка не обязательно может быть связана с PHP.
Во-первых, под апачем крутится, например, dav-svn.
Во-вторых, теоретически не всегда php обработает error_handler.
В-третьих, если разработчики где-то облажаются, не факт, что error_handler выдаст корректный результат.
В-четвертых, если файл не существует но сам PHP даже не будет вызван.

Список могу продолжать :)

Итого мое имхо: трейсить в PHP обязательно нужно, но возможна ситуация при которой это не поможет.

SaBo ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.