zoukankan      html  css  js  c++  java
  • 【转】在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分钟就完成了,这么短的文章我却编排了几个小时,到最后才勉强差人意,真不知写了那么多的文章的人是怎么坚持下去的。 
       
             (二)使用单独的配置文件,不放在web.config里
       1.新建一website.
       2.添加一个类库工程,取名LogNet
      
      3. 为LogNet工程引用log4net.dll
      4. 双击打开AssemblyInfo.cs在最后添加
      [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]5. 为LogNet工程添加一个logBLL.cs文件,我们把日志调用封装到这一层
      
      
      using System;
      using System.Collections.Generic;
      using System.Text;
      namespace LogNet
      {
       public class LogBLL
       {
       public static void debug(string message)
       {
       log4net.ILog log = log4net.LogManager.GetLogger("Test");
       if (log.IsDebugEnabled)
       {
       log.Debug(message);
       }
       log = null;
       }
       public static void error(string message)
       {
       log4net.ILog log = log4net.LogManager.GetLogger("Test");
    if (log.IsErrorEnabled)
       {
       log.Error(message);
       }
       log = null;
       }
       public static void fatal(string message)
       {
      
       log4net.ILog log = log4net.LogManager.GetLogger("Test");
       if (log.IsFatalEnabled)
       {
       log.Fatal(message);
       }
       log = null;
       }
       public static void info(string message)
       {
       log4net.ILog log = log4net.LogManager.GetLogger("Test");
       if (log.IsInfoEnabled)
       {
       log.Info(message);
       }
       log = null;
       }
      
       public static void warn(string message)
       {
       log4net.ILog log = log4net.LogManager.GetLogger("Test");
       if (log.IsWarnEnabled)
       {
       log.Warn(message);
       }
       log = null;
       }
       }
      }
      
      
      6.在web站点根目录下添加一个log4net.config文件,内容如下
      <?xml version="1.0" encoding="utf-8" ?>
      <configuration>
       <configSections>
       <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
       </configSections>
       <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>
      </configuration>
      7.编译LogNet工程
      8.为web引入LogNet工程bin目录下的LogNet.dll
      9.在default.aspx.cs里写入如下代码
      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 LogNet; //引用程序集
      public partial class _Default : System.Web.UI.Page
      {
       protected void Page_Load(object sender, EventArgs e)
       {
       if (!Page.IsPostBack)
       {
       LogBLL.debug("测试信息");
       }
       }
      }
      
      10.运行,将在web目录下的log目录下看到日志文件
       ----------------------header--------------------------
      2007-11-24 12:16:24,171 [4] DEBUG LiveBookings - 测试信息
      2007-11-24 12:16:46,312 [4] DEBUG LiveBookings - 测试信息
      ----------------------footer-------------------------- 
  • 相关阅读:
    青蛙学Linux—Zabbix部署之构建LNMP环境
    青蛙学Linux—Zabbix运维监控平台
    青蛙学Linux—ProxySQL实现MySQL读写分离
    青蛙学Linux—ProxySQL配置系统
    青蛙学Linux—MySQL中间件ProxySQL
    青蛙学Linux—MySQL主从复制
    青蛙学Linux—MySQL备份工具XtraBackup
    PicGo+图床,编写本地markdown
    mfix输出自定义数据
    OpenFoam+CFDEM+Liggghts安装耦合
  • 原文地址:https://www.cnblogs.com/5tao/p/1261248.html
Copyright © 2011-2022 走看看