winform项目使用log4net

原以为和webform一样,就是web.config换成App.config而已,结果日志死活不出来,搞了大半天才跑通。

我尝试了两种方式,都遇到了问题,最后都跑通了。

第一种:log4net节点配置全部写在App.config文件内。

1. 添加log4net.dll引用。

2. App.config的configuration节点下添加如下元素:

<configSections>
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
  <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
    <param name="File" value="log.txt" />
    <param name="AppendToFile" value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%d [%t] %-5p %c [%M] - %m%n" />
    </layout>
  </appender>
  <root>
    <level>INFO</level>
    <appender-ref ref="LogFileAppender" />
  </root>
</log4net>

3. Properties/AssemblyInfo.cs文件中,添加一行:

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

开始漏了第3步,一直生成不了日志。这句的用处是,从应用程序的config文件(即App.config)的相关节点自动配置log4net系统。

第二种:使用独立的log4net.config文件。

1. 添加log4net.dll引用。

2. App.config的appSettings节点下添加如下元素:

<add key="log4net.Config" value="log4net.config"/>
<add key="log4net.Config.Watch" value="True"/>
3. App.config同级目录下,添加log4net.config文件,内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
    <param name="File" value="D:\log\xixi.txt" />
    <param name="AppendToFile" value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%d [%t] %-5p %c [%M] - %m%n" />
    </layout>
  </appender>

  <root>
    <level>INFO</level>
    <appender-ref ref="LogFileAppender" />
  </root>
</log4net>
4. 修改log4net.config文件属性-"Copy to Output Directory"的值为"Copy if newer"或者"Copy Always".

开始漏了第4步,也是一直不能生成日志,改了就好了。

App.config是系统默认配置文件,debug的时候已经化身为 "程序名.exe.config"。然而其他文件如果不指定copy的话,是到不了bin\debug下面的。

你可能感兴趣的:(WinForm,log4net,不能生成日志)