2016-03-04 4 views
1

Что мне нужно сделать, это достать из:Передача log4net ConfigurationFile на новый AppDomain

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

значение, но когда я пытаюсь получить доступ к Appender, используя следующие: -

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

Я нахожу, что все, что у меня есть, равно null. Итак, как мне получить доступ к моему пути?

Это мой 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> 

Благодаря

ответ

1

Причина вы не можете найти имя файла является то, что вы запрашиваете корневой регистратор - но вы не имеете корневой регистратор, определенный в вашей конфигурации, а корень по умолчанию не имеет каких-либо добавлений, связанных с ним.

Вы должны запустить этот код вместо который использует свой определенный регистратор, чтобы получить имя файла:

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

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

По какой-то причине, я предполагал, что я должен был начать с корнем. Это большое спасибо. Я ценю вашу помощь! – Parsley