2009-12-22 4 views
0

Ma question est similaire à this one, mais avec un contexte un peu plus simple. Dans mon cas, j'ai une seule application qui peut être exécutée deux fois (tout au plus) simultanément avec différents paramètres de ligne de commande, de sorte que chaque instance connaisse son contexte.Comment faire en sorte que différentes instances de la même application se connectent à des fichiers différents avec log4net?

Le fichier app.config définit une section log4net pour configurer la journalisation. Ici, il est:

<log4net xsi:noNamespaceSchemaLocation="http://csharptest.net/downloads/schema/log4net.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <appender name="MainAppender" type="log4net.Appender.FileAppender"> 
    <file value="${TMP}\NCAgent.log" /> 
    <appendToFile value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 
    </layout> 
    </appender> 
    <appender name="DebugAppender" type="log4net.Appender.ConsoleAppender"> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 
    </layout> 
    </appender> 
    <root> 
    <level value="ERROR" /> 
    <appender-ref ref="MainAppender" /> 
    <level value="INFO"/> 
    <appender-ref ref="DebugAppender"/> 
    </root> 
</log4net> 

Et, bien sûr, nous avons un problème que deux instances d'application peuvent se connecter au même fichier journal, donc lors de l'exécution d'une des instances (le choix est bien défini et sans ambiguïté) charge la log4net XmlElement, modifie le nom du fichier journal et configure log4net en utilisant la surcharge XmlConfigurator.Configure(XmlElement).

Je n'aime pas notre approche et pense qu'il devrait y avoir une meilleure solution. Des idées?

Merci.

Répondre

0

Vous pouvez essayer de configurer le nom de fichier FileAppender par programme et d'ajouter l'ID de processus, ou sous-classer FileAppender pour rendre ce comportement automatique avec l'approche basée sur la configuration.

Questions connexes