2015-08-04 2 views
0

Bien qu'il ne soit pas difficile d'installer des fichiers journaux différents, chacun avec une conversionPattern différente, par niveau, je voudrais avoir une journalisation minimale pour toutes sauf les erreurs, où j'aimerais une entrée de journal détaillée. Voici un extrait de ma configuration actuelle:log4net - conversionPattern par niveau pour FileAppender unique?

<appender name="WarningsAndBelowFileAppender" type="log4net.Appender.FileAppender"> 
    <file value="log.txt" /> 
    <appendToFile value="false" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%m%n" /> 
    </layout> 
    <filter type="log4net.Filter.LevelRangeFilter"> 
    <levelMax value="WARN" /> 
    </filter> 
</appender> 

<appender name="ErrorsFileAppender" type="log4net.Appender.FileAppender"> 
    <file value="errors.txt" /> 
    <appendToFile value="false" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%d [%t] %-5p %c [%x] - %m%n" /> 
    </layout> 
    <threshold value="ERROR" /> 
</appender> 

J'aimerais avoir ces deux configurations aller dans un seul fichier journal, juste avoir des conversionPatterns pour chacun. Cela peut-il être fait?

Répondre

0

vous ne pouvez pas le faire dans le fichier de configuration, mais vous pouvez le faire avec le convertisseur de mise en page de modèle.

Voir l'information here

Cela devrait être le code converti:

class MyMessageConverter : PatternLayoutConverter 
{ 
    protected override void Convert(TextWriter writer, LoggingEvent loggingEvent) 
    { 
     if (loggingEvent.Level.Value <= Level.Warn.Value) 
     { 
      writer.Write(loggingEvent.RenderedMessage); 
     } 
     else 
     { 
      writer.Write("{0} [{1}] {2,5} {3} - {4}", 
       loggingEvent.TimeStamp, 
       loggingEvent.ThreadName, 
       loggingEvent.Level.Name, 
       loggingEvent.LocationInformation.ClassName, 
       loggingEvent.RenderedMessage); 

     } 
    } 
} 

Et voici le fichier de configuration:

<appender name="FileAppender" type="log4net.Appender.FileAppender"> 
    <file value="log.txt" /> 
    <appendToFile value="false" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%MSG%n" /> 
     <converter> 
     <name value="MSG" /> 
     <type value="yournamespace.MyMessageConverter " /> 
     </converter> 
    </layout> 
</appender>