MVC5中使用Log4Net
最早搜到的是这篇:
http://www.codeproject.com/Articles/823247/How-to-use-Apache-log-net-library-with-ASP-NET-MVC
百度的话,到处是这篇文章的翻译,转载来转载去的,真没意义
但是这里面描述的配置太麻烦了,而且实际项目更可能的是类似这样一个目录:
更合理的应该是只要在Tool中添加log4net的引用,再封装一个帮助类供外调用即可
试了一下,这样做就可以了:
1.添加引用
这个不用解释了吧
2.添加一个配置文件:
内容如下:
<log4net> <logger name="logerror"> <level value="ALL" /> <appender-ref ref="ErrorAppender" /> </logger> <logger name="loginfo"> <level value="ALL" /> <appender-ref ref="InfoAppender" /> </logger> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\\LogError\\" /> <param name="AppendToFile" value="true" /> <param name="MaxSizeRollBackups" value="100" /> <param name="MaxFileSize" value="10240" /> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyyMMdd".log"" /> <param name="RollingStyle" value="Date" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" /> <!--<param name="ConversionPattern" value="<HR COLOR=red>%n异常时间:%d [%t] <BR>%n异常级别:%-5p <BR>%n异 常 类:%c [%x] <BR>%n%m <BR>%n " />--> </layout> </appender> <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\\LogInfo\\" /> <param name="AppendToFile" value="true" /> <param name="MaxFileSize" value="10240" /> <param name="MaxSizeRollBackups" value="100" /> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyyMMdd".log"" /> <param name="RollingStyle" value="Date" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" /> <!--<param name="ConversionPattern" value="<HR COLOR=gray>%n日志时间:%d [%t] <BR>%n日志级别:%-5p <BR>%n日 志 类:%c [%x] <BR>%n%m <BR>%n " />--> </layout> </appender> </log4net>
ConversionPattern是控制输出内容,如果想要日志输出html文件,
取消注释掉的ConversionPattern,反将其上面一个ConversionPattern注释掉
再将DatePattern中的.log改成.htm
3.创建帮助类
代码如下:
public static class LogHelper { private static log4net.ILog _loginfo; private static log4net.ILog _logerror; private static bool _config = false; public static void Config() { if (_config) return; var tmp = System.Reflection.Assembly.GetExecutingAssembly().Location; var codeBase = System.Reflection.Assembly.GetExecutingAssembly().CodeBase; codeBase = codeBase.Substring(8, codeBase.LastIndexOf("/") - 8 + 1); string file = codeBase + "log4net.config"; using (var fs = File.Open(file, FileMode.Open)) log4net.Config.XmlConfigurator.Configure(fs); _loginfo = log4net.LogManager.GetLogger("loginfo"); _logerror = log4net.LogManager.GetLogger("logerror"); _config = true; } public static void Debug(object info) { _loginfo.Debug(info); } public static void Info(object info) { _loginfo.Info(info); } public static void Error(Exception ex) { _logerror.Error(ex.Message, ex); } }
4.Web配置
在Global.asax中添加一行代码:
5.结果
再次运行代码,你就能看到Log目录在网站根目录下生成了。