Настроить RollingFileAppender Дата прокатки программно - PullRequest
3 голосов
/ 04 марта 2009

Я работаю над программной настройкой RollingFileAppender в log4net. У меня сейчас что-то вроде этого:

RollingFileAppender fa = new RollingFileAppender();
fa.AppendToFile = true;
fa.RollingStyle = RollingFileAppender.RollingMode.Date;
fa.DatePattern = "yyyyMMdd";
fa.StaticLogFileName = true;
// Set more properties and add the appender to the root repository

Это отказывается откатывать журнал на основе даты. Если я переключу RollingStyle на Size или Composite, он будет катиться, но только на основе размера, а не на основе даты. Я попытался удалить StaticLogFileName и поиграть с DatePattern безрезультатно.

Я должен настроить это программно, так как я не знаю количество дополнений во время выполнения, поэтому настройка его с использованием XML, с которым я работал в прошлом, не нужна. У кого-нибудь есть идеи? Я что-то пропустил?

Ответы [ 2 ]

3 голосов
/ 19 мая 2009

Это происходит из-за того факта, что RollingFileAppender (и многие другие приложения, а также фильтры) реализует интерфейс IOptionHandler , который "позволяет объекту отложить активацию своих параметров до тех пор, пока не будут установлены все параметры. Это требуется для компонентов, у которых есть связанные параметры, которые остаются неоднозначными, пока все не будут установлены ".

И еще: «Метод ActivateOptions должен быть вызван для этого объекта после того, как свойства конфигурации были заданы. До вызова ActivateOptions этот объект находится в неопределенном состоянии и не должен использоваться.»

При настройке адаптеров с помощью XML-файлов вам не нужно думать об активации, поскольку она выполняется конфигуратором log4net.

0 голосов
/ 06 марта 2009

Я добавил вызов ActivateOptions () после настройки приложения для работы с файлами, но до добавления приложения в иерархию, и это, похоже, сработало. Почему некоторые варианты застряли без звонка, а другие - нет, это вопрос другого дня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...