ASP.Net2.0使用Log4Net(一)

第一种方法 在web.config中写配置文件
  
  Log4Net主页: http://logging.apache.org/log4net/,下载Log4Net
  Log4Net主要由Logger, Appender, Filter, Layout 4个组件构成, 一般情况下后3个组件在配置文件中配置.
  Logger
  负责产生日志消息,可以在代码中调用
  Appender
  负责向存储介质中追加日志, 一般在配置文件中配置,根据保存日志介质的不同Appender有多种, 比如:AdoNetAppender,EventLogAppender,RollingFileAppender等.参见: http://logging.apache.org/log4net/release/config-examples. HTML.
  Filter
  负责过滤日志, 一般和Appender联合使用,在配置文件中配置
  Layout
  负责日志消息的格式, 一般和Appender联合使用,在配置文件中配置。
  使用步骤
   1.给web项目添加引用log4net.dll
   2. 在web.config的configuration(最顶层)下加 (网上文章是把log4net放到configSections前面,但是我编译不通过)
  
  <configSections>
   <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
   </configSections>
   <log4net>
   <root></root>
   <logger name="Test">
   <level value="DEBUG" />
   <appender-ref ref="rollingFile" />
   </logger>
   <appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net" >
   <param name="File" type="" value="log/" />
   <param name="AppendToFile" value="true" />
   <param name="RollingStyle" value="Date" />
   <param name="DatePattern" value="yyyyMMdd" />
   <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>
  
  
  
  Logger的Level属性可以设以下值,由高到低为OFF,FATAL, ERROR,WARN,INFO,DEBUG,ALL. 高于设定值方法都能写入日志, Off所有的写入方法都不写到日志里,ALL则相反。例如当我们设成Info时,logger.Debug就会被忽略而不写入文件,但是FATAL, ERROR,WARN,INFO会被写入,因为他们等级高于INFO;
   3. 在Global.ascx(如果项目中没有,则新建)中的Application_Start方法中加入
  
  void Application_Start(object sender, EventArgs e)
   {
   // Code that runs on application startup
   log4net.Config. XMLConfigurator.Configure();
  
   }
  
  
   4.配置<log4net>标签中的内容
  
  
  
  <log4net>
   <root>
   <!--
   <level value="ALL" />
   <appender-ref ref="rootFile" />
   -->
   </root>
   <logger name="Test">
   <level value="DEBUG" />
   <appender-ref ref="rollingFile" />
   </logger>
   <appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net" >
   <param name="File" type="" value="log/" />
   <param name="AppendToFile" value="true" />
   <param name="RollingStyle" value="Date" />
   <param name="DatePattern" value="yyyyMMdd" />
   <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>
  
  
  
   log4net标签的框架如下, 该标签下有root, logger, appender等标签
   root标签
   所有的logger都从root继承, root本身也是一个logger
   logger标签
   每个logger标签代表一个logger,appender-ref表示该logger产生的日志消息传递给哪个appender,一个logger可以把相同的消息传递给多个appender记录
   appender标签
   每个appender表示一个日志的存储位置,name不能和type一样
  
  类型是RollingFileAppender
  <appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net" >
   <param name="File" value="log" /> 文件名以log为开头
   <param name="AppendToFile" value="true" /> 是否是向文件中追加日志
   <param name="RollingStyle" value="Date" /> 日志根据日期滚动
   <param name="DatePattern" value="yyyyMMdd" /> 日志文件名格式为: log20071120
   <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>
  
  消息模式
  %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
  %n(new line):换行
  %d(datetime):输出当前语句运行的时刻
  %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
  %t(thread id):当前语句所在的线程ID
  %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
  %c(class):当前日志对象的名称
  %L:输出语句所在的行号
  %F:输出语句所在的文件名
  %-数字:表示该项的最小长度,如果不够,则用空格填充
  5. 在代码中调用Logger
  
  
  using System;
  using System.Configuration;
  using System.Data;
  using System.Web;
  using System.Web.Security;
  using System.Web.UI;
  using System.Web.UI. HTMLControls;
  using System.Web.UI.WebControls;
  using System.Web.UI.WebControls.WebParts;
  using log4net;
  
  public partial class _Default : System.Web.UI.Page
  {
   protected void Page_Load(object sender, EventArgs e)
   {
   ILog LOGGER = LogManager.GetLogger("Test");
   LOGGER.Debug("测试信息");
   }
  }
  
  
  
  
  最后,可以在根目录下找到日志对应日志文件。
  本例源码:下载本文源码
  注:本文参考博客园的相关文章,我用的是vs2008,但类库选得是 .NET framework2.0.
  另记:做实例10分钟就完成了,这么短的文章我却编排了几个小时,到最后才勉强差人意,真不知写了那么多的文章的人是怎么坚持下去的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值