2010-01-06 5 views
1

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

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

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

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

ответ

3

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

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

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

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

+1

В скаченного архива вы можете найти пример того, как сделать это в файле «SRC/примеры/PHP/configurator_php .php». Однако log4php v2.1.0 был первой версией, с которой я действительно работал. – jason

Смежные вопросы