Log4Net组件的应用详解

第一步:

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

1<configSections>
2    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
3</configSections>

第二步:

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

001<?xml version="1.0" encoding="UTF-8"?>
002<log4net debug="false">
003  
004  <!--按日期分割日志文件 一天一个-->
005  <appender name="LogFileAppenderByDate" type="log4net.Appender.RollingFileAppender" >
006  
007    <!--是否续写-->
008    <param name="AppendToFile" value="true" />
009    <!--最小锁定模型以允许多个进程可以写入同一个文件-->
010    <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
011    <param name="StaticLogFileName" value="true" />
012    <!--保存路径-->
013    <param name="File" value="d:\Log\\" />
014    <param name="DatePattern" value="yyyy-MM-dd.LOG" />
015    <param name="StaticLogFileName" value="false" />
016    <param name="RollingStyle" value="Date" />
017    <layout type="log4net.Layout.PatternLayout">
018      <param name="ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
019    </layout>
020  </appender>
021  
022  <!--按日志容量分割日志文件 10KB一个-->
023  <appender name="LogFileAppenderBySize" type="log4net.Appender.RollingFileAppender" >
024    <!--是否续写-->
025    <param name="AppendToFile" value="true" />
026    <!--最小锁定模型以允许多个进程可以写入同一个文件-->
027    <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
028  
029    <param name="StaticLogFileName" value="true" />
030  
031    <!--按照文件的大小进行变换日志文件-->
032    <param name="RollingStyle" value="Size" />
033    <param name="File" value="log.txt" />
034    <!--单个文件最大数量 好像只有在 按Size分割时有效-->
035    <param name="MaximumFileSize" value="200KB"/>
036    <!--保留的log文件数量 超过此数量后 自动删除之前的   好像只有在 按Size分割时有效-->
037    <param name="MaxSizeRollBackups" value="2" />
038  
039    <param name="StaticLogFileName" value="false" />
040    <layout type="log4net.Layout.PatternLayout">
041      <param name="ConversionPattern" value="发生时间:%d %n事件级别:%level %n相关类名:%c%n程序文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
042    </layout>
043  </appender>
044  
045  <!--记录日志到数据库-->
046  <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
047    <bufferSize value="1" />
048    <!--缓冲大小-->
049    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
050    <connectionString value="Data Source=.\SQLEXPRESS;Initial Catalog=CVDS;User ID=sa;Password=sasa" />
051    <commandText value="INSERT INTO Log([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
052    <parameter>
053      <parameterName value="@log_date" />
054      <dbType value="DateTime" />
055      <layout type="log4net.Layout.RawTimeStampLayout" />
056    </parameter>
057    <parameter>
058      <parameterName value="@thread" />
059      <dbType value="String" />
060      <size value="255" />
061      <layout type="log4net.Layout.PatternLayout">
062        <conversionPattern value="%thread" />
063      </layout>
064    </parameter>
065    <parameter>
066      <parameterName value="@log_level" />
067      <dbType value="String" />
068      <size value="50" />
069      <layout type="log4net.Layout.PatternLayout">
070        <conversionPattern value="%level" />
071      </layout>
072    </parameter>
073    <parameter>
074      <parameterName value="@logger" />
075      <dbType value="String" />
076      <size value="255" />
077      <layout type="log4net.Layout.PatternLayout">
078        <conversionPattern value="%logger" />
079      </layout>
080    </parameter>
081    <parameter>
082      <parameterName value="@message" />
083      <dbType value="String" />
084      <size value="4000" />
085      <layout type="log4net.Layout.PatternLayout">
086        <conversionPattern value="%message" />
087      </layout>
088    </parameter>
089    <parameter>
090      <parameterName value="@exception" />
091      <dbType value="String" />
092      <size value="2000" />
093      <layout type="log4net.Layout.ExceptionLayout" />
094    </parameter>
095  </appender>
096  
097  <root>
098    <level value="INFO" />
099    <!--启用按日期分割-->
100    <appender-ref ref="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(new FileInfo(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    public class LogHelper
12    {
13        private static ILog log;
14        private static LogHelper logHelper = null;
15        /// <summary>
16        /// 初始化
17        /// </summary>
18        /// <returns></returns>
19        public static ILog GetInstance()
20        {
21            logHelper = new LogHelper(null);
22  
23            return log;
24        }
25        /// <summary>
26        /// 初始化
27        /// </summary>
28        /// <param name="configPath"></param>
29        /// <returns></returns>
30        public static ILog GetInstance(string configPath)
31        {
32            logHelper = new LogHelper(configPath);
33  
34            return log;
35        }
36        /// <summary>
37        /// 构造函数
38        /// </summary>
39        /// <param name="configPath"></param>
40        private LogHelper(string configPath)
41        {
42            if (!string.IsNullOrEmpty(configPath))
43            {
44                log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
45                log4net.Config.XmlConfigurator.Configure(new System.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        protected void Button2_Click(object sender, EventArgs e)
3        {
4                logs.Fatal("Excption:这里就是要提示的LOG信息");
5        }

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值