最近做一个winform项目,配置了Log4net 但是总是不能输出,搜索了很多文章加上自己的探索发现自己在项目中添加的 Log4Net.config 生成时没有被复制到Debug文件夹下,
所以程序在调用日志输出时找不到这个配置文件,所以没有输出(在网上搜了很多,也有很多说是路径问题造成不能输出)
解决办法:1.在项目工程中,选中 Log4Net.config 文件,右击 --》属性--》复制到输出目录--》始终复制
2.在项目工程中,选中log4net.dll文件,右击--》属性--》复制到输出目录--》始终复制
这样的话,每次生成都会将这两个文件复制到Debug下
3.在项目的Properties --》Assemblyinfo.cs 下添加代码
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
4. 我的Log4Net.config配置文件是这样的
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net debug="true"> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="log\applicationLog.log" /> <!--file可以指定具体的路径 eg : d:\\test.log。不指定的话log被生成在项目的bin/Debug 或者 bin/Release目录下 (web的项目 默认生成在根目录下)--> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="10" /> <!--备份log文件的个数最多10个--> <maximumFileSize value="2MB" /> <!--每个log文件最大是2M,如果超过2M将重新创建一个新的log文件,并将原来的log文件备份。--> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> <!--指定log的格式--> <conversionPattern value="[%date] %thread -- %-5level -- %logger [%M] -- %message%newline" /> </layout> </appender> <root> <level value="DEBUG" /> <!--指定将此级别及以上的log打印到log文件中--> <appender-ref ref="RollingLogFileAppender" /> </root> </log4net> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup> </configuration>
然后大功告成