Настроить RollingFileAppender Дата прокатки программно
-
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 () после настройки приложения для работы с файлами, но до добавления приложения в иерархию, и это, похоже, сработало. Почему некоторые варианты застряли без звонка, а другие - нет, это вопрос другого дня.