Log4net是Apache log4j框架在Microsort.NET平台实现的框架.
帮助程序员将日志信息输出到各种目标(控制台,数据库,文件等)
1.新建一个ASP.NET项目
2.新建一个 log4net.config
文件,用来放置日志的配置,为什么不写在在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文件的一些参数
[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的帮助类
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重载,根据自己的需要来调用