Настроить RollingFileAppender Дата прокатки программно

StackOverflow https://stackoverflow.com/questions/611483

  •  03-07-2019
  •  | 
  •  

Вопрос

Я работаю над программной настройкой 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, с которым я мог работать в прошлом, не нужна. У кого-нибудь есть идеи? Я что-то пропустил?

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

Решение

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

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

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

Другие советы

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

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