带有 asp.net 核心 2 的 log4net
log4net with asp.net core 2
我正在使用 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,感谢您的帮助
我刚刚测试了你的代码,它工作得很好,所以我只能假设,你分配你的 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"));
// ...
}
}
我正在使用 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,感谢您的帮助
我刚刚测试了你的代码,它工作得很好,所以我只能假设,你分配你的 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"));
// ...
}
}