Log4net是Apache log4j框架在Microsort.NET平台实现的框架.程序员
帮助程序员将日志信息输出到各类目标(控制台,数据库,文件等)web
1.新建一个ASP.NET项目数据库
2.新建一个 log4net.configapp
文件,用来放置日志的配置,为何不写在在web.Config中呢,主要是由于这样更加清晰,明了,不会那么的混乱框架
打开log4net.config文件,将下面的配置复制进去异步
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <system.web> <compilation debug="true" targetFramework="4.5.2" /> <httpRuntime targetFramework="4.5.2" /> </system.web> <log4net> <!--错误日志:::记录错误日志--> <!--按日期分割日志文件 一天一个--> <!-- appender 定义日志输出方式 将日志以回滚文件的形式写到文件中。--> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <!--保存路径:下面路径项目启动的时候自动在C盘中建立log、logError文件--> <file value="Content\\LogError"/> <!-- 若是想在本项目中添加路径,那就直接去掉C:\\ 只设置log\\LogError 项目启动中默认建立文件 --> <appendToFile value="true"/> <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])--> <rollingStyle value="Date"/> <!--这是按日期产生文件夹--> <datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/> <!--是否只写到一个文件中--> <staticLogFileName value="false"/> <!--保留的log文件数量 超过此数量后 自动删除以前的 好像只有在 按Size分割时有效 设定值value="-1"为不限文件数--> <param name="MaxSizeRollBackups" value="100"/> <!--每一个文件的大小。只在混合方式与文件大小方式下使用。超出大小后在全部文件名后自动增长正整数从新命名,数字最大的最先写入。可用的单位:KB|MB|GB。不要使用小数,不然会一直写入当前日志--> <maximumFileSize value="1GB" /> <!-- layout 控制Appender的输出格式,也能够是xml 一个Appender只能是一个layout--> <layout type="log4net.Layout.PatternLayout"> <!--每条日志末尾的文字说明--> <!--输出格式 模板--> <!-- <param name="ConversionPattern" value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 记录类:%logger 操做者ID:%property{Operator} 操做类型:%property{Action}%n 当前机器名:%property%n当前机器名及登陆用户:%username %n 记录位置:%location%n 消息描述:%property{Message}%n 异常:%exception%n 消息:%message%newline%n%n" />--> <!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info--> <!--<conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别: %-5level %n错误描述:%message%newline %n"/>--> <conversionPattern value="%n========== %n【日志级别】%-5level %n【记录时间】%date %n【线程编号】[%thread] %n【执行时间】[%r]毫秒 %n【出错文件】%F %n【出错行号】%L %n【出错的类】%logger 属性[%property{NDC}] %n【错误描述】%message %n【错误详情】%newline"/> </layout> </appender> <!--Error日志::: 错误日志--> <logger name="logerror"> <level value="ERROR" /> <appender-ref ref="ErrorAppender" /> </logger> </log4net> </configuration>
3.打开Properties中的Assemblyinfo.cs性能
将代码放进去, AssemblyInfo.cs主要用来设定生成的有关程序集的常规信息dll文件的一些参数spa
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
5.在Global.asax设置log4net线程
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Server.MapPath("/Log4net.config")));
6.log4netHelper的帮助类debug
public class Log4netHelper { #region /// <summary> /// /// </summary> /// <param name="msg"></param> public static void ErrorLog(object msg) { log4net.ILog log = log4net.LogManager.GetLogger("logerror"); Task.Run(() => log.Error(msg)); //异步 // Task.Factory.StartNew(() =>log.Error(msg));// 这种异步也能够 //log.Error(msg); //这种也行跟你须要,性能越好,越强大,我仍是使用异步方式 } /// <summary> /// /// </summary> /// <param name="ex"></param> public static void ErrorLog(Exception ex) { log4net.ILog log = log4net.LogManager.GetLogger("logerror"); Task.Run(() => log.Error(ex.Message.ToString() + "/r/n" + ex.Source.ToString() + "/r/n" + ex.TargetSite.ToString() + "/r/n" + ex.StackTrace.ToString())); } /// <summary> /// /// </summary> /// <param name="msg"></param> /// <param name="ex"></param> public static void ErrorLog(object msg, Exception ex) { log4net.ILog log = log4net.LogManager.GetLogger("logerror"); if (ex != null) { Task.Run(() => log.Error(msg, ex)); //异步 } else { Task.Run(() => log.Error(msg)); //异步 } } #endregion }
7.直接是调用帮助类,里面一个有三个方法,ErrorLog重载,根据本身的须要来调用