Pergunta

Eu estou trabalhando em configuração de um RollingFileAppender em log4net programaticamente. Eu tenho algo parecido com isso no momento:

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

Esta recusa-se a rolar o log com base na data. Se eu mudar o RollingStyle O tamanho ou Composite, será então rolo, mas apenas o tamanho com base, não a data base. Eu tentei remover o StaticLogFileName e brincar com o DatePattern sem sucesso.

Eu tenho que configurar isso programaticamente, como eu não sei o número de appenders em tempo de execução, então configurá-lo usando XML, o que eu tenho sido capaz de começar a trabalhar no passado, é um não-go. Alguém tem alguma idéia? Estou esquecendo de algo?

Foi útil?

Solução

Este comportamento é devido ao fato de que RollingFileAppender (e muitas outras appenders, bem como filtros) implementa o IOptionHandler interface de que" permite que um objeto de ativação de adiamento de suas opções até que todas as opções foram definidas. Isso é necessário para componentes que têm opções relacionadas que permanecem ambígua até que todos estejam set ".

E mais adiante: "A ActivateOptions método deve ser chamado para este objecto após as propriedades de configuração ter sido definido. Até ActivateOptions é chamado este objeto está em um estado indefinido e não deve ser usado. "

Ao configurar adaptadores através de arquivos XML que você não tem que pensar sobre a ativação, uma vez que é feito pelo configurador log4net.

Outras dicas

Eu adicionei uma chamada para ActivateOptions () depois de configurar a appender arquivo, mas antes de adicionar o appender à hierarquia, e que parecia trabalho. Por que algumas opções preso sem a chamada, mas outros fizeram não é uma questão para outro dia.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top