WPF应用程序中的Log4Net设置

时间:2018-04-17 10:30:44

标签: c# wpf log4net log4net-configuration

我无法相信我不得不问这个问题,但这里有......

我正在尝试在新的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 ...");
}

作为最后一个决赛“尝试并看看它是否有效”我将其添加到上述方法......

XmlConfigurator.Configure();

...仍然没有创建长文件。

那我错过了什么?

编辑:

所以基于评论,我想我应该补充一下:

我见过的问题&amp;像这样的答案...... 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");

...然而,这仍然没有发生任何事情,没有日志文件但没有例外,除了看似执行但没有结果的日志记录调用之外,代码似乎运行良好。

1 个答案:

答案 0 :(得分:3)

如果您在DEV中,则需要将Log4Net.config复制到bin \ debug;完成与否?必须将副本设置为propterties,或作为资源文件设置以便稍后包含在安装程序安装程序中。再见;谢谢你的投票。