最近做一个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配置文件是这样的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
<?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= "logapplicationLog.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> |
然后大功告成