原以为和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下面的。