2016-03-04 1 views
1

Ce que je dois faire est de mettre la main sur le la:Passant log4net ConfigurationFile à un nouveau AppDomain

<param name="File" value=".\MyExe.exe.log"/> 
valeur

mais lorsque je tente d'accéder au appender en utilisant les éléments suivants: -

var rootAppender = ((Hierarchy)LogManager.GetRepository()) 
    .Root.Appenders.OfType<RollingFileAppender>() 
    .FirstOrDefault(); 
var myFilePath = rootAppender != null ? rootAppender.File : string.Empty; 

Je trouve que tout ce que je reçois est nul. Alors, comment puis-je accéder à mon chemin?

Ceci est ma section de configuration log4net: -

<log4net threshold="All"> 
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <param name="File" value=".\MyExe.exe.log"/> 
     <param name="AppendToFile" value="true"/> 
     <param name="ImmediateFlush" value="true"/> 
     <param name="RollingStyle" value="size"/> 
     <param name="MaxSizeRollBackups" value="5"/> 
     <param name="MaximumFileSize" value="1MB"/> 

     <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/> 
     </layout> 

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

    <logger name="MYLOGGER"> 
     <level value="All"/> 
     <appender-ref ref="RollingLogFileAppender"/> 
    </logger> 

    </log4net> 

Merci

Répondre

1

La raison pour laquelle vous ne trouvez pas le nom du fichier est que vous interrogez l'enregistreur racine - mais vous n'avez pas root logger défini dans votre config, et la racine par défaut n'a aucun appender lié à elle.

Vous devez exécuter ce code à la place qui utilise votre enregistreur défini pour obtenir le nom de fichier:

var loggerAppender = LogManager.GetLogger("MYLOGGER").Logger.Repository 
           .GetAppenders() 
           .OfType<RollingFileAppender>() 
           .FirstOrDefault(); 

var myFilePath = loggerAppender != null ? loggerAppender.File : string.Empty; 
+0

Pour une raison quelconque, je l'avais supposé que je devais commencer à la racine. Cela fonctionne très bien. J'apprécie ton aide! – Parsley