Domanda

Sto lavorando alla configurazione di RollingFileAppender in log4net a livello di programmazione. Ho qualcosa di simile attualmente:

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

Questo si rifiuta di eseguire il roll-log in base alla data. Se cambio RollingStyle su Dimensioni o Composito, rotolerà, ma solo in base alle dimensioni, non in base alla data. Ho provato a rimuovere StaticLogFileName e giocare con DatePattern senza risultati.

Devo configurarlo a livello di codice, poiché non conosco il numero di appendici in fase di esecuzione, quindi configurarlo utilizzando XML, che sono stato in grado di far funzionare in passato, è un non-andare. Qualcuno ha qualche idea? Mi sto perdendo qualcosa?

È stato utile?

Soluzione

Questo comportamento è dovuto al fatto che RollingFileAppender (e molte altre appendici e filtri) implementano l'interfaccia IOptionHandler che " consente a un oggetto di differire l'attivazione delle sue opzioni fino a quando tutte le opzioni non sono state impostate. Ciò è necessario per i componenti che hanno opzioni correlate che rimangono ambigue fino a quando tutti non sono impostati " ;.

E inoltre: " ActivateOptions deve essere chiamato su questo oggetto dopo aver impostato le proprietà di configurazione. Fino a quando ActivateOptions viene chiamato questo oggetto è in uno stato indefinito e non deve essere utilizzato. & Quot;

Quando si configurano gli adattatori tramite file XML, non è necessario pensare all'attivazione poiché viene eseguita dal configuratore log4net.

Altri suggerimenti

Ho aggiunto una chiamata ad ActivateOptions () dopo aver impostato l'appender di file ma prima di aggiungere l'appender alla gerarchia, e sembrava funzionare. Perché alcune opzioni si bloccano senza la chiamata ma altre no è una domanda per un altro giorno.

scroll top