带asp.net核心2的log4net

时间:2018-07-18 08:00:41

标签: log4net asp.net-core-2.0

我正在使用log4net动态创建日志文件,我在这里http://geekswithblogs.net/rgupta/archive/2009/03/03/dynamic-log-filenames-with-log4net.aspx尝试了以下步骤,但是我正在获取(null).txt文件,这是我的log4net.config文件

 `<log4net>
  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="app_data/log/%date{yyyy-MM-dd}/%property{LogName}.txt" />
    <rollingStyle value="Date" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <datePattern value="yyyyMMdd" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="10000KB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value=" %-5level %date{dd-mm-yyyy HH:mm:ss} %logger [%thread] - %message %exception%newline%property{LogName}" />
    </layout>
  </appender>
  <root>
    <appender-ref ref="RollingFileAppender" />
    <level value="All" />
  </root>
</log4net>`

这是我的测试代码

log4net.GlobalContext.Properties["LogName"] = "xx@xx.xx";

正如我所说,我正在获取(null).txt FileName而不是xx@xx.xx.txt,谢谢您的帮助

1 个答案:

答案 0 :(得分:1)

我刚刚测试了您的代码,它的工作正常,所以我只能假设,您正在将GlobalContext属性分配给最近。请记住,在调用XmlConfigurator.Configure方法之前进行设置。像这样在您的Program.cs文件中设置它:

public static class Program
{
    public static void Main(string[] args)
    {
        // ...

        GlobalContext.Properties["LogName"] = "xx@xx.xx";
        XmlConfigurator.Configure(new FileInfo("log4net.config"));

        // ...
    }
}