Изменение уровня ведения журнала в log4net xml - PullRequest
1 голос
/ 24 апреля 2011

У меня есть настольное приложение c # 3.5 winforms, работающее на рабочем сервере. Оно использует log4net для регистрации.

Требование заключается в том, что пользователь должен иметь возможность переключать уровень ведения журнала во время выполнения ... например: если уровень переключен на уровень "INFO", то приложение должно писать только журналы уровня информации. Кроме того, бизнес не хочет изменять уровень журнала, перейдя на сервер prod и отредактировав xml-файл log4net.

Какой из следующих подходов подойдет для этого? Или есть какой-нибудь другой лучший подход? Иметь win-форму «Admin», которая позволит пользователю изменять уровень журнала. Пользователь будет входить в приложение со своего рабочего стола.

1. И затем в приложении я могу загрузить log4net xml из сетевого пути, используя log4net api, сохранить изменения с новым уровнем, предоставленным из пользовательского интерфейса, а затем повторно создать экземпляр класса регистратора с новым уровнем.

или

2.В базе есть 2 новые таблицы .... справочная таблица "A" с идентификаторами и именами уровня. И еще одна таблица "B" с именем пользователя, идентификатором текущего уровня и датой изменения.

Обновить уровень, представленный на экране пользовательского интерфейса в таблице B. Используя .net Sqlcachedependency, всякий раз, когда значение в таблице B изменяется, заново создайте экземпляр класса регистратора с новым уровнем.

Спасибо.

Ответы [ 2 ]

1 голос
/ 24 апреля 2011

Возможно, если вы выберете 1-й вариант, это будет намного проще.

Возможно, вы захотите скопировать файл конфигурации log4net на локальный пользовательский компьютер. Как только пользователь изменил уровень, вы сохраняете его локально в xml. Вы можете использовать этот метод для отслеживания изменений в конфигурации log4net

log4net.Config.XmlConfigurator.ConfigureAndWatch

Наконец, вам нужно будет повторно инициализировать регистратор

1 голос
/ 24 апреля 2011

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

...