一、先下载log4net.dll、Newtonsoft.Json.dll和配置log4net.config
相关DLL下载地址:log4net相关dll
下载地址:http://logging.apache.org/log4net/download_log4net.cgi,把下载的文件解压,找到log4net.dll文件。
我这里需要配置log4net.config文件,具体配置如下:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net> <root> <level value="ALL" /> <appender-ref ref="rollingFile" /> </root> <!--<logger name="testApp.Logging"> <level value="DEBUG" /> <appender-ref ref="rollingFile" /> </logger>--> <appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net" > <param name="File" type="" value="logger/" /> <param name="AppendToFile" value="true" /> <param name="RollingStyle" value="Date" /> <param name="DatePattern" value="yyyyMMdd".log"" /> <param name="StaticLogFileName" value="false" /> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> <param name="Header" value=" ----------------------header-------------------------- " /> <param name="Footer" value=" ----------------------footer-------------------------- " /> </layout> </appender> </log4net> </configuration>
另外,需要在AssemblyInfo.cs下加上以下代码
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
如下图:
二、 新建一个类库,命名为Common,先引用log4net.dll、Newtonsoft.Json.dll 在这个类库下面新建错误日志类ErrorLog.cs,,然后生成。主要代码如下:
namespace Common { /// <summary> /// 密封错误日志类,不能被继承 /// </summary> public sealed class ErrorLog { /// <summary> /// 导入操作日志到文件中 /// </summary> /// <param name="moduleName">模块名称</param> /// <param name="message">错误文本信息</param> /// <param name="ex">异常</param> public static void Write(string moduleName, string message, Exception ex) { log4net.ILog log = log4net.LogManager.GetLogger(moduleName); if (ex != null) { log.Error(message+";"+ex.Message,ex); } if (!string.IsNullOrEmpty(message)) { log.Info(message); } log = null; } /// <summary> /// 导入操作日志到文件中 /// </summary> /// <param name="moduleName">模块名称</param> /// <param name="obj">对象</param> /// <param name="ex">异常</param> public static void Write(string moduleName, object obj, Exception ex) { if (ex == null) { ex = new Exception(); } string message = Newtonsoft.Json.JsonConvert.SerializeObject(obj); log4net.ILog log = log4net.LogManager.GetLogger(moduleName); if (ex != null) { log.Error(message + ";" + ex.Message, ex); } if (!string.IsNullOrEmpty(message)) { log.Info(message); } log = null; } /// <summary> /// 写入操作日志到文件中 /// </summary> /// <param name="moduleName"></param> /// <param name="ex"></param> public static void Write(string moduleName, Exception ex) { Write(moduleName, moduleName, ex); } public static void Write(string message) { Write(String.Empty, message, null); } } }
三、新建WebMVC项目。需要先引用前面的Common.dll,还要把前面log4net.config拷贝到WebMVC目录下。
这里引用,只要common改变了,WebMVC引用那边会及时更新,具体如下图:
在HomeController写,测试代码
ErrorLog.Write("WebMVC:" + DateTime.Now);如下图:
四、按F5运行代码之后,WebMVC目录下会产生logger文件下,logger目录下会生成以日期命名格式的记事本文件“20150524.log”,具体如下图: