Вот что у меня получилось в итоге:
Конфиг:
Код: Выделить всё
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns="http://logging.apache.org/log4php/">
<appender name="default" class="LoggerAppenderDailyFile">
<layout class="LoggerLayoutPattern">
<param name="conversionPattern" value="%d{H:i:s} %p [%c]: %m (at %F:%L) %x%n" />
</layout>
<param name="file" value="Log/%s.log" />
<param name="datePattern" value="Y-m-d" />
</appender>
<root>
<level value="TRACE" />
<appender_ref ref="default" />
</root>
</configuration>
С данным конфигом имеем следующее:
1. Логи создаются каждый день.
2. Имя лог-файла генерится по дате.
3. В логе указывается:
- а) Дата
б) Уровень логирования(Error,Debug,Fatal и т.д) Описание: http://logging.apache.org/log4php/docs/ ... ction.html
в) Метод который вызвал(название класса:функция)
г) Скрипт, при выполнении которого произошло событие
д) Сообщение
е) Файл и номер строки в котором произошло событие
Пример: - фатальная ошибка
Ставим проверку на выполнение sql апросов к базе.
Файл: "/majordomo/lib/errors.class.php"
Функия: error($description, $stop = 0, $short)
Код: Выделить всё
// вызываем логгер
$log = Logger::getLogger(__METHOD__);
// урл
$script = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
// сообщение об ошибке
$description = "Script: " . $script . "\nError: " . $description;
// запись в лог
$log->fatal($description);
При обращении к несуществующей таблице в БД получим в логе сообщение:
Код: Выделить всё
22:13:52 FATAL [error::error]: Script: http://192.168.1.7/admin.php?pd=pz_&md=panel&inst=&action=scripts
Error: 1146: Table 'majordomo.scripts' doesn't exist<br />SELECT scripts.*, script_categories.TITLE as CATEGORY FROM scripts LEFT JOIN script_categories ON scripts.CATEGORY_ID=script_categories.ID WHERE 1 ORDER BY script_categories.TITLE, scripts.TITLE (at /mnt/majordomo/lib/errors.class.php:41)
Обычные сообщения при дебаге можно писать в лог с уровнем TRACE или DEBUG, кому как нравится.
Итог:
1. Логи можно открывать за определённый день.
2. Можно искать в логе по определённому уровню.
3. Конфиг можно настроить конфиг логов под себя.
з.ы. У меня не получилось селать проверку выполнения eval функции. Если кто знает как это сделать раскажите плиз.