2010-07-16 8 views
0

En utilisant log4net, puis-je configurer un enregistreur afin qu'il puisse remplacer un seul paramètre de l'un des appenders? Quelques exemples:Autoriser un enregistreur à remplacer le paramètre d'un appender spécifique?

<log4net> 
    <appender name="A1" type="log4net.Appender.FileAppender"> 
    <file value="log4net.log"> 
    </appender> 
    <root> 
    <level value="ERROR" /> 
    <appender-ref ref="A1" /> 
    </root> 
    <logger name="MyLogger"> 
    <level value="WARN" /> 
    <appender-ref ref="A1"> 
     <file value="MyLogger.Log"/> 
    </appender-ref> 
    </logger> 
</log4net> 

Par exemple, je voudrais configurer un de mes sous-enregistreurs pour envoyer la sortie vers un fichier différent du reste de ma demande. Est-ce que je vais dans le mauvais sens? Dois-je le configurer avec un nouvel appender? Qu'en est-il de l'envoi de différents niveaux à différents appenders? par exemple.

<log4net> 
    <appender name="default" type="log4net.Appender.FileAppender"> 
    <file value="My.log"> 
    </appender> 
    <appender name="errors" type="log4net.Appender.FileAppender"> 
    <file value="Errors.log"> 
    </appender> 
    <root> 
    <level value="DEBUG"> 
     <appender-ref ref="default" /> 
    </level> 
    <level value="ERROR"> 
     <appender-ref ref="errors" /> 
    </level> 
    </root> 
</log4net> 

Répondre

0

J'ai ajouté ceci comme nouvelle réponse car il est trop long pour tenir dans un commentaire.

Essayez quelque chose comme


 <appendToFile value="true" /> 

     <layout type="log4net.Layout.PatternLayout"> 
      <header value="[Header]%date&#13;&#10;" /> 
      <footer value="[Footer]%date&#13;&#10;" /> 
      <conversionPattern value="%date [%thread] %-5level %logger [%ndc] &lt;%property{auth}&gt; - %message%newline" /> 
     </layout> 
    </appender> 

    <appender name="MyLogger" type="log4net.Appender.FileAppender"> 
     <file type="log4net.Util.PatternString" value="MyLogger.Log" /> 

     <appendToFile value="true" /> 

     <layout type="log4net.Layout.PatternLayout"> 
      <header value="[Header]%date&#13;&#10;" /> 
      <footer value="[Footer]%date&#13;&#10;" /> 
      <conversionPattern value="%date [%thread] %-5level %logger [%ndc] &lt;%property{auth}&gt; - %message%newline" /> 
     </layout> 
    </appender> 


    <!-- Setup the root category, add the appenders and set the default level --> 
    <root> 
     <level value="INFO" /> 
     <appender-ref ref="A1" /> 
    </root> 

    <logger name="SpecialMethod"> 
     <level value="DEBUG" /> 
     <appender-ref ref="MyLogger" /> 
    </logger> 

</log4net 
+0

Oui, on dirait que c'est le plus proche, en mettant plusieurs appenders. Mais il n'est toujours pas utile de reproduire un cas où les messages de débogage/info vont à un journal et les erreurs à un autre ... comme le http d'apache et le journal des erreurs. –

0

J'utilise quelque chose de similaire à votre premier fichier xml. (Avec Log4net pour C#)

Ne pense pas que le deuxième xml fonctionnera, parce que, si je comprends bien, il interprétera <level value="DEBUG"> comme mise le niveau de journalisation DEBUG, alors que vous le vouloir interpréter comme

if (Level == DEBUG) ... 
+0

Comment peut-il fonctionner? La syntaxe est-elle juste comme ça? Cela ne semble pas avoir d'effet sur moi quand je l'essaie. –