Pregunta

Estoy trabajando en la configuración de un RollingFileAppender en log4net mediante programación. Tengo algo como esto actualmente:

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

Esto se niega a rodar el registro según la fecha. Si cambio el RollingStyle a Tamaño o Compuesto, se enrollará, pero solo se basará en el tamaño, no en la fecha. Intenté eliminar el StaticLogFileName y jugar con DatePattern en vano.

Tengo que configurar esto mediante programación, ya que no sé la cantidad de apéndices en tiempo de ejecución, por lo que configurarlo usando XML, que he podido hacer funcionar en el pasado, es imposible. ¿Alguien tiene alguna idea? ¿Me estoy perdiendo de algo?

¿Fue útil?

Solución

Este comportamiento se debe al hecho de que RollingFileAppender (y muchos otros anexos, así como filtros) implementa la interfaz IOptionHandler que " permite que un objeto difiera la activación de sus opciones hasta que se hayan configurado todas las opciones. Esto es necesario para los componentes que tienen opciones relacionadas que permanecen ambiguas hasta que se configuran todos ".

Y más: " El ActivateOptions en este objeto después de que se hayan establecido las propiedades de configuración. Hasta que se active ActivateOptions, este objeto está en un estado indefinido y no debe utilizarse. & Quot;

Al configurar adaptadores a través de archivos xml, no tendrá que pensar en la activación, ya que la realiza el configurador log4net.

Otros consejos

Agregué una llamada a ActivateOptions () después de configurar el archivo adjunto pero antes de agregarlo a la jerarquía, y eso pareció funcionar. Por qué algunas opciones se quedaron sin la llamada pero otras no, es una pregunta para otro día.

scroll top