突然想到想测试一下log4net,结果折腾了两天,才弄出来.....记录下来以备以后查看
背景:vs2013 mvc项目中想体验下log4net的功能(主要是文件记录)
翻看了log4net的相关资料,才发现其实它是有很多功能的,可以把日志记录到一个文本,或是按日期,大小分多个文本记录,还可以记录到数据库,输出到控制台.....等等,这些内容有很多,就不说了,主要说要我自己的碰到的坑。
这里有详细的直接在mvc 项目文件中集成使用log4net的介绍,我是觉得好麻烦啊,和以前在vs2010 上弄的完全麻烦多了(这里没有考虑把log4net 和 Common.logging 一起使用,一起使用时配置就不用那么麻烦了)
我主要是要提出来作为一个模块来配置,新建一个类库,在NuGet里面引用log4net
新建一个LogHelper 类
1 public class LogHelper 2 { 3 4 public static void WriteLog(Type t, Exception ex) 5 { 6 log4net.ILog logger = log4net.LogManager.GetLogger(t); 7 logger.Error("Error", ex); 8 } 9 10 11 public static void WriteLog(Type t, string msg) 12 { 13 log4net.ILog log = log4net.LogManager.GetLogger(t); 14 log.Error(msg); 15 log.Debug(msg); 16 log.Info(msg); 17 log.Warn(msg); 18 } 19 }
mvc项目 引用该类库,然后添加log4net的配置。
配置可以分开来写,web.config里面一部分和自定义的xxx.config文件一部分;也可以一起全部写在web.config里面
不管怎么写配置文件,web.config里面的<configSections>节点里面一定要添加log4net,这里展示的是把<log4net>节点写在web.config里面
<log4net><!--错误日志配置--><appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"><param name="File" value="D:\\xxxx\\LogError\\" /><param name="AppendToFile" value="true" /><param name="MaxSizeRollBackups" value="-1" /><param name="MaxFileSize" value="10240" /><param name="StaticLogFileName" value="false" /><param name="DatePattern" value="yyyy-MM-dd.'log'" /><param name="RollingStyle" value="Date" /><param name="BufferSize" value="1" /><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%n异常时间:%d [%t] %n异常级别:%-5p %n异 常 类:%c [%x] %n%m %n " /></layout></appender><!--信息日志配置--><appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"><param name="File" value="D:\\xxxx\\Log\\LogInfo\\" /><param name="AppendToFile" value="true" /><param name="MaxFileSize" value="10240" /><param name="MaxSizeRollBackups" value="-1" /><param name="StaticLogFileName" value="false" /><param name="DatePattern" value="yyyy-MM-dd.'log'" /><param name="RollingStyle" value="Date" /><param name="BufferSize" value="100" /><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c [%x] %n%m %n" /></layout></appender> </log4net>
还可以单独把<log4net>节点里的内容提取出来放到自定义的xxx.config 文件中
光这样还是不行的,有个注意的地方