Domanda

Secondo la Documentazione Log4Net , il RollingFileAppender eseguirà il roll del file di registro solo quando viene registrato un messaggio. Devo accedere a questo file, ma importarlo ogni giorno in un altro database. Non posso usare un appender di database perché ho bisogno dei file e devo tradurre i dati dal file di registro al database (non è una copia diretta). Il problema è che se non c'è attività di registro dopo mezzanotte, il registro non rotola. L'importatore cerca il file dei giorni precedenti (e non posso modificare questo codice), quindi se non c'è attività e il registro non è stato eseguito, l'importatore non trova il file. Esiste un modo per forzare il registro a rotolare a mezzanotte senza avere un altro thread che si sveglia e lo costringe a rotolare? Un appender personalizzato potrebbe farlo? Vorrei evitarlo, se possibile.

È stato utile?

Soluzione

Scrivi un servizio di Windows che genera un evento subito dopo mezzanotte che scrive una voce di registro fittizia utilizzando la stessa configurazione.

Altri suggerimenti

Devi pensarci dal punto della domanda "quali percorsi di codice conducono alla routine di rollover?" Una volta che sai come viene raggiunta quella routine, puoi decidere come attivarla.

Potrebbe un appender personalizzato farlo? Certo, ma nessun codice nell'appender verrà eseguito fino a quando non accedi tramite esso, quindi tornerai al punto di partenza.

Per quanto riguarda la domanda "Esiste comunque un modo per forzare il log a rotolare a mezzanotte senza avere un altro thread che si sveglia e lo costringe a rotolare?", direi che quella domanda equivale a "È possibile per forzare il registro a scorrere a mezzanotte senza che venga eseguito alcun codice? " ;. Non sto cercando di essere divertente a riguardo, o di insultarti, sto solo cercando di riaffermare la domanda in un modo che si spera possa risponderti per te. : -)

Il modo più semplice per risolverlo è far svegliare e accedere qualcosa per forzare la rotazione del file.

Secondo la Documentazione RollingFileAppender puoi impostarlo per eseguire il roll su base giornaliera, vedere questa configurazione:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="logfile" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <datePattern value="yyyyMMdd" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top