C# 从配置文件读取log4net.Util.PatternString

C# 从配置文件读取log4net.Util.PatternString,c#,log4net,C#,Log4net,如何从配置文件中读取log4net.Util.PatternString值 <log4net> ... <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> <file type="log4net.Util.PatternString" value="D:\AppLogs\%date{yyyy}\%date{MM}\%date{dd-MMM}.x

如何从配置文件中读取log4net.Util.PatternString值

<log4net>
  ...
  <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="D:\AppLogs\%date{yyyy}\%date{MM}\%date{dd-MMM}.xml" />
  </appender>
</log4net>

...

我查看了ILog属性,但找不到任何提供日志文件位置的信息。

您可以将log4net配置解析为xml文件,然后在value属性中找到appender->file

或者您可以尝试一些类似于在当前附加器中搜索的方法:

foreach (var r in log4net.LogManager.GetAllRepositories()){
  foreach (var a in r.GetAppenders()){
    if (a is log4net.Appender.FileAppender){
      log4net.Appender.FileAppender fileappender = a as  log4net.Appender.FileAppender;
      .....
    }
  }
} 

您可以获得如下文件名:

var ap = Log.Logger.Repository.GetAppenders().First(a => a is FileAppender) as FileAppender;

它将具有
文件
日期模式
属性。

您只需要PatternString或日志文件名?我对PatternString感兴趣。