Вопрос

У меня есть PHP-приложение, содержащее несколько модулей и различные настройки внутри каждого модуля.Я бы хотел включить ведение журнала с помощью log4php, но каждый отдельный модуль имеет разные настройки (т.Е.Уровень журнала, файл журнала и т.д.).Некоторые из этих настроек должны быть изменены конечными пользователями "на лету" (уровень журнала), и я хотел бы сохранить эти свойства в базе данных.

Прямо сейчас я могу динамически устанавливать уровень журнала.Однако я не могу определить, как динамически устанавливать другие свойства.Документация по настройке log4php почти исключительно выполняется с помощью свойств / xml-файлов, хотя в ней говорится, что все настройки могут быть изменены программно.

Кто-нибудь делал что-то подобное?Если да, то как мне это сделать?Я просмотрел документацию по адресу http://incubator.apache.org/log4php/index.html, но мне нужно больше помощи.

Чтобы уточнить - я НЕ хочу использовать файлы конфигурации, так как конечные пользователи не будут иметь к ним прямого доступа.Я предоставлю интерфейс для изменения определенных параметров ведения журнала, и все настройки будут сохранены в базе данных.

Это было полезно?

Решение

Просмотр документов API говорит мне, что они используют конфигурационные адаптеры и шаблон стратегии для настройки регистраторов.Адаптеры имеют единый метод настроить, который вызывается главным регистратором.Существует LoggerConfiguratorPhp Регистратор конфигурации, который будет считывать / включать PHP-файл, возвращающий обычный PHP-массив.Я мог бы представить, что это можно легко изменить, чтобы вместо этого принимать массив, возвращаемый из базы данных.Взгляните на исходный код этого класса для получения отправной точки.То, что вы захотите создать, - это LoggerConfiguratorDB, который затем вы можете передать основному классу Logger следующим образом:

$configurator = dirname(__FILE__).'/../resources/configurator_db.php';
Logger::configure( $configurator, 'LoggerConfiguratorDb');

Я никогда не работал с Log4Php, и это просто предположение, если посмотреть на API.Я абсолютно понятия не имею, как должен был бы выглядеть новый адаптер.Но, возможно, это направит вас в правильном направлении.

Если вам удастся что-то придумать, почему бы не пожертвовать это проекту :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top