2010-06-09 15 views
16

Io sto usando un RollingFileAppender per accedere alcune informazioni in un file con un conversionPattern (nel web.config) che assomiglia a questo per l'intestazione di ogni sezione di registro:Può Log4net avere più appendici scrivere sullo stesso file?

<conversionPattern value="%date - %property{userId} - %property{method}%newline--------------------------------%newline%message%newline%newline"/> 

vorrei effettuare il login dettagli sotto questa intestazione come punti elenco. Attualmente sto cercando di utilizzare un altro RollingFileAppender che registra allo stesso file con un semplice conversionPattern di appena un trattino, come questo:

<conversionPattern value="- %message%newline"/> 

Ma questi messaggi non stanno rendendo nel file di registro. Sto usando Log.Info() per l'intestazione e Log.Debug() per i punti elenco e filtrando ogni appender ai rispettivi livelli di registro. È quello che sto cercando di fare? O c'è un modo migliore per ottenere informazioni di intestazione e dettagli in un file di log da log4net?

risposta

32

Sì, è possibile avere due appendici di log4net che aggiungono (scrivono) allo stesso file di registro.

è necessario inserire la seguente riga in ciascuno dei vostri appenders:

<lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 

Questo renderà log4net utilizzare un modello di blocco minima che consente a più processi di scrivere allo stesso file.

Ecco un esempio XML che utilizza due appenders scrittura allo stesso file di registro:

<log4net debug="false"> 
<appender name="RollingLogFileAppender1" type="log4net.Appender.RollingFileAppender"> 
    <!-- this configures a log for the application messages --> 
    <file value="TestLog.log" /> 
    <appendToFile value="true" /> 
    <!-- next line uses a minimal locking model that allows multiple processes to write to the same file --> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="10MB" /> 
    <staticLogFileName value="true" /> 
    <!-- make the most recent log the highest numbered log --> 
    <countDirection value="1" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%-5level %date{MM-dd-yyyy HH:mm:ss.ff} [%property{NDC}] %message%newline [Thread: %thread] %c{1} Method:%method(%file{1}, Line:%line) %newline" /> 
    </layout> 
    <!-- The following two filters insure only log requests of 
     version '1' use this Appender --> 
</appender> 
<appender name="RollingLogFileAppender2" type="log4net.Appender.RollingFileAppender"> 
    <file value="TestLog.log" /> 
    <appendToFile value="true" /> 
    <!-- next line uses a minimal locking model that allows multiple processes to write to the same file --> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="10MB" /> 
    <staticLogFileName value="true" /> 
    <!-- make the most recent log the highest numbered log --> 
    <countDirection value="1" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%-5level %date{MM-dd-yyyy HH:mm:ss.ff} [%property{NDC}] [Thread: %thread] %c{1} Method:%method(%file{1}, Line:%line) %newline%message" /> 
    </layout> 
</appender> 
<root> 
    <level value="DEBUG" /> 
    <appender-ref ref="RollingLogFileAppender1" /> 
    <appender-ref ref="RollingLogFileAppender2" /> 
</root> 

Questo può essere trovato nella documentazione Apache qui: Apache Log4Net Docs Basta cercare in questa pagina per ' stesso file '.

Spero che questo aiuti.

+0

Nota solo le versioni più recenti di log4net hanno questa impostazione lockingModel Xml e la classe MinimalLock. Se si utilizza una versione precedente, nessun errore verrà lanciato ma non funzionerà. –

1

È possibile capire se c'è qualche problema con log4net che controlla la finestra di output su Visual Studio. Gli errori di registro della libreria sono molto utili per rilevare errori di configurazione.

+0

Purtroppo non ci sono errori che sono rapporti che mi potrebbe aiutare :( – adam0101

+0

avete eseguito il codice per configurare log4net, giusto? –

Problemi correlati