Log4Net组件的应用详解

来源:互联网 发布:淘宝联盟登不上 编辑:程序博客网 时间:2024/06/05 11:08

第一步:

添加并应用Log4net.dll。然后在Web.config文件中添加下面的配置局

查看源码
打印?
1<configSections>
2    <sectionname="log4net"type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
3</configSections>

第二步:

新建Log4Net.config的配置文件,并在其中添加下面的配置信息:

查看源码
打印?
001<?xmlversion="1.0"encoding="UTF-8"?>
002<log4netdebug="false">
003  
004  <!--按日期分割日志文件 一天一个-->
005  <appendername="LogFileAppenderByDate"type="log4net.Appender.RollingFileAppender">
006  
007    <!--是否续写-->
008    <paramname="AppendToFile"value="true"/>
009    <!--最小锁定模型以允许多个进程可以写入同一个文件-->
010    <paramname="LockingModel"value="log4net.Appender.FileAppender.MinimalLock"/>
011    <paramname="StaticLogFileName"value="true"/>
012    <!--保存路径-->
013    <paramname="File"value="d:\Log\\"/>
014    <paramname="DatePattern"value="yyyy-MM-dd.LOG"/>
015    <paramname="StaticLogFileName"value="false"/>
016    <paramname="RollingStyle"value="Date"/>
017    <layouttype="log4net.Layout.PatternLayout">
018      <paramname="ConversionPattern"value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n"/>
019    </layout>
020  </appender>
021  
022  <!--按日志容量分割日志文件 10KB一个-->
023  <appendername="LogFileAppenderBySize"type="log4net.Appender.RollingFileAppender">
024    <!--是否续写-->
025    <paramname="AppendToFile"value="true"/>
026    <!--最小锁定模型以允许多个进程可以写入同一个文件-->
027    <paramname="LockingModel"value="log4net.Appender.FileAppender.MinimalLock"/>
028  
029    <paramname="StaticLogFileName"value="true"/>
030  
031    <!--按照文件的大小进行变换日志文件-->
032    <paramname="RollingStyle"value="Size"/>
033    <paramname="File"value="log.txt"/>
034    <!--单个文件最大数量 好像只有在 按Size分割时有效-->
035    <paramname="MaximumFileSize"value="200KB"/>
036    <!--保留的log文件数量 超过此数量后 自动删除之前的   好像只有在 按Size分割时有效-->
037    <paramname="MaxSizeRollBackups"value="2"/>
038  
039    <paramname="StaticLogFileName"value="false"/>
040    <layouttype="log4net.Layout.PatternLayout">
041      <paramname="ConversionPattern"value="发生时间:%d %n事件级别:%level %n相关类名:%c%n程序文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n"/>
042    </layout>
043  </appender>
044  
045  <!--记录日志到数据库-->
046  <appendername="AdoNetAppender"type="log4net.Appender.AdoNetAppender">
047    <bufferSizevalue="1"/>
048    <!--缓冲大小-->
049    <connectionTypevalue="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
050    <connectionStringvalue="Data Source=.\SQLEXPRESS;Initial Catalog=CVDS;User ID=sa;Password=sasa"/>
051    <commandTextvalue="INSERT INTO Log([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)"/>
052    <parameter>
053      <parameterNamevalue="@log_date"/>
054      <dbTypevalue="DateTime"/>
055      <layouttype="log4net.Layout.RawTimeStampLayout"/>
056    </parameter>
057    <parameter>
058      <parameterNamevalue="@thread"/>
059      <dbTypevalue="String"/>
060      <sizevalue="255"/>
061      <layouttype="log4net.Layout.PatternLayout">
062        <conversionPatternvalue="%thread"/>
063      </layout>
064    </parameter>
065    <parameter>
066      <parameterNamevalue="@log_level"/>
067      <dbTypevalue="String"/>
068      <sizevalue="50"/>
069      <layouttype="log4net.Layout.PatternLayout">
070        <conversionPatternvalue="%level"/>
071      </layout>
072    </parameter>
073    <parameter>
074      <parameterNamevalue="@logger"/>
075      <dbTypevalue="String"/>
076      <sizevalue="255"/>
077      <layouttype="log4net.Layout.PatternLayout">
078        <conversionPatternvalue="%logger"/>
079      </layout>
080    </parameter>
081    <parameter>
082      <parameterNamevalue="@message"/>
083      <dbTypevalue="String"/>
084      <sizevalue="4000"/>
085      <layouttype="log4net.Layout.PatternLayout">
086        <conversionPatternvalue="%message"/>
087      </layout>
088    </parameter>
089    <parameter>
090      <parameterNamevalue="@exception"/>
091      <dbTypevalue="String"/>
092      <sizevalue="2000"/>
093      <layouttype="log4net.Layout.ExceptionLayout"/>
094    </parameter>
095  </appender>
096  
097  <root>
098    <levelvalue="INFO"/>
099    <!--启用按日期分割-->
100    <appender-refref="LogFileAppenderByDate"/>
101    <!--启用按容量分割-->
102    <!--<appender-ref ref="LogFileAppenderBySize" />-->
103    <!--启用保存到数据库-->
104    <!--<appender-ref ref="AdoNetAppender" />-->
105  </root>
106  
107</log4net>

第三步:

在Global.asax文件中的Application_Start事件中添加如下代码:

查看源码
打印?
1protected void Application_Start(object sender, EventArgs e)
2  {
3       // Code that runs on application startup
4      log4net.Config.XmlConfigurator.ConfigureAndWatch(newFileInfo(Server.MapPath("Log4Net.config")));  
5  }

第四步:调用LOG4net 写日志

查看源码
打印?
1protected void Button2_Click(object sender, EventArgs e)
2        {
3                     ILog logs = LogManager.GetLogger(typeof(TEST));
4  
5           logs.Fatal("Excption:这里就是要提示的LOG信息");
6        }

也可以通过写一个LogHelper.cs类进行封装:

查看源码
打印?
01using System;
02using System.Collections.Generic;
03using System.Web;
04using log4net;
05  
06namespace SBIT.Web.Class
07{
08    /// <summary>
09    /// 日志辅助类
10    /// </summary>
11    publicclass LogHelper
12    {
13        privatestatic ILog log;
14        privatestatic LogHelper logHelper =null;
15        /// <summary>
16        /// 初始化
17        /// </summary>
18        /// <returns></returns>
19        publicstatic ILog GetInstance()
20        {
21            logHelper =new LogHelper(null);
22  
23            returnlog;
24        }
25        /// <summary>
26        /// 初始化
27        /// </summary>
28        /// <param name="configPath"></param>
29        /// <returns></returns>
30        publicstatic ILog GetInstance(stringconfigPath)
31        {
32            logHelper =new LogHelper(configPath);
33  
34            returnlog;
35        }
36        /// <summary>
37        /// 构造函数
38        /// </summary>
39        /// <param name="configPath"></param>
40        privateLogHelper(stringconfigPath)
41        {
42            if(!string.IsNullOrEmpty(configPath))
43            {
44                log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
45                log4net.Config.XmlConfigurator.Configure(newSystem.IO.FileInfo(configPath));
46            }
47            else
48            {
49                log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
50            }
51        }
52  
53    }
54}

通过封装类写日志的方法如下:

查看源码
打印?
1private static readonly ILog logs = LogHelper.GetInstance(); //LogManager.GetLogger(typeof(TEST));
2        protectedvoid Button2_Click(objectsender, EventArgs e)
3        {
4                logs.Fatal("Excption:这里就是要提示的LOG信息");
5        }

转自:http://www.cnblogs.com/huanghai223/archive/2012/02/21/2361529.html

原创粉丝点击