WPF 应用程序中的 Log4Net 设置
Log4Net Setup in a WPF app
我不敢相信我不得不问这个问题,但是这里...
我正在尝试在新的 WPF 应用程序中设置 log4net,但出于某种原因,它没有创建日志文件和记录任何内容,所以这是我到目前为止完成的步骤...
添加来自 nuget 的最新版本 (v2.0.8.0) 参考后。
在AssemblyInfo.cs中:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
在app.config中:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a" />
</configSections>
<log4net configSource="Log4Net.config" />
在Log4Net.config中:
<?xml version="1.0" encoding="utf-8"?>
<log4net>
<appender name="rollingLogFile" type="log4net.Appender.RollingFileAppender">
<file value="D:\Logs\WorkflowApp.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="100KB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-6level %logger - %message %exception%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="rollingLogFile" />
</root>
</log4net>
在App.xaml.cs中:
ILog log = LogManager.GetLogger(typeof(App));
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
log.Debug("Initialising ...");
}
作为最后一个 "try it and see if it works" 我将其添加到上述方法中...
XmlConfigurator.Configure();
...仍然没有创建长文件。
那我错过了什么?
编辑:
所以根据评论,我想我应该添加这个:
我见过这样的问答...
Using log4net to write to different loggers
...如果我将这样的内容添加到我的 Log4Net.config...
<logger name="File">
<level value="DEBUG" />
<appender-ref ref="rollingLogFile" />
</logger>
然后将我的记录器构造更改为...
ILog log = LogManager.GetLogger("File");
...然而,这仍然没有任何结果,没有日志文件,但没有异常,代码似乎 运行 正常,除了似乎执行但没有结果的日志记录调用。
如果你在DEV,你需要将Log4Net.config复制到bin\debug;做还是不做?必须将副本设置为属性,或者作为资源文件稍后包含在安装程序中。再见;感谢您的投票。
我不敢相信我不得不问这个问题,但是这里...
我正在尝试在新的 WPF 应用程序中设置 log4net,但出于某种原因,它没有创建日志文件和记录任何内容,所以这是我到目前为止完成的步骤...
添加来自 nuget 的最新版本 (v2.0.8.0) 参考后。
在AssemblyInfo.cs中:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
在app.config中:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a" />
</configSections>
<log4net configSource="Log4Net.config" />
在Log4Net.config中:
<?xml version="1.0" encoding="utf-8"?>
<log4net>
<appender name="rollingLogFile" type="log4net.Appender.RollingFileAppender">
<file value="D:\Logs\WorkflowApp.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="100KB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-6level %logger - %message %exception%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="rollingLogFile" />
</root>
</log4net>
在App.xaml.cs中:
ILog log = LogManager.GetLogger(typeof(App));
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
log.Debug("Initialising ...");
}
作为最后一个 "try it and see if it works" 我将其添加到上述方法中...
XmlConfigurator.Configure();
...仍然没有创建长文件。
那我错过了什么?
编辑:
所以根据评论,我想我应该添加这个:
我见过这样的问答... Using log4net to write to different loggers
...如果我将这样的内容添加到我的 Log4Net.config...
<logger name="File">
<level value="DEBUG" />
<appender-ref ref="rollingLogFile" />
</logger>
然后将我的记录器构造更改为...
ILog log = LogManager.GetLogger("File");
...然而,这仍然没有任何结果,没有日志文件,但没有异常,代码似乎 运行 正常,除了似乎执行但没有结果的日志记录调用。
如果你在DEV,你需要将Log4Net.config复制到bin\debug;做还是不做?必须将副本设置为属性,或者作为资源文件稍后包含在安装程序中。再见;感谢您的投票。