log4net 简单说明和应用例子

<?xml version="1.0" encoding="utf-8" ?>
<!--
在框架的体系里,所有的日志对象都是根日志(root logger)的后代。
因此如果一个日志对象没有在配置文件里显式定义,则框架使用根日志中定义的属性。
在<root>标签里,可以定义level级别值和Appender的列表。如果没有定义LEVEL的值,则缺省为DEBUG。
可以通过<appender-ref>标签定义日志对象使用的Appender对象。<appender-ref>声明了在其他地方定义的Appender对象的一个引用。
在一个logger对象中的设置会覆盖根日志的设置。而对Appender属性来说,子日志对象则会继承父日志对象的Appender列表。
这种缺省的行为方式也可以通过显式地设定<logger>标签的additivity属性为false而改变。
<logger> 元素预定义了一个具体日志对象的设置。然后通过调用LogManager.GetLogger(“testAPP.Logging”)函数,你可以检索具有该名字的日志。
如果LogManager.GetLogger(…)打开的不是预定义的日志对象,则该日志对象会继承根日志对象的属性。知道了这一点,我们可以说,其实<logger>标签并不是必须的。
在<root>标签或单个的<logger>标签里的Appender对象可以用<appender>标签定义。
<appender>标签的基本形式如上面所示。它定义了appender的名字和类型。 另外比较重要的是<appender>标签内部的其他标签。
不同的appender有不同的<param>标签。在这里,为了使用FileAppender,你需要一个文件名作为参数。另外还需要一个在<appender>标签内部定义一个Layout对象。Layout对象定义在它自己的<layout>标签内。
<layout>标签的type属性定义了Layout的类型(在本例里是PatternLayout),同时也确定了需要提供的参数值。Header和Footer标签提供了一个日志会话(logging session)开始和结束时输出的文字.
%n(new line):换行

%d(datetime):输出当前语句运行的时刻

%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数

%t(thread id):当前语句所在的线程ID

%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等

%c(class):当前日志对象的名称,例如:

       模式字符串为:%-10c -%m%n

       代码为:

ILog log=LogManager.GetLogger(“Exam.Log”);

log.Debug(“Hello”);

    则输出为下面的形式:

Exam.Log       - Hello

%L:输出语句所在的行号

%F:输出语句所在的文件名

%-数字:表示该项的最小长度,如果不够,则用空格填充

例如,转换模式为%r [%t]%-5p %c - %m%n 的 PatternLayout 将生成类似于以下内容的输出:

176 [main] INFO  org.foo.Bar - Located nearest gas station.

 

-->
<configuration>
  <configSections>
    <section name="log4net"
      type="log4net.Config.Log4NetConfigurationSectionHandler,
            log4net-net-1.2.10.0" />
  </configSections>
  <log4net>
    <root>
   <level value="ALL" />
  </root>


    <!--<logger name="logFile">
      <level value="ALL" />
      <appender-ref ref="LogFileAppender" />
    </logger>-->

    <logger name="logRollingFile">
      <level value="ALL" />
      <appender-ref ref="RollingFileAppender" />
    </logger>
    <logger name="logregesterFile">
      <level value="ALL" />
     <appender-ref ref="regest" />
    </logger>
    <logger name="romoteFile">
      <level value="ALL" />
      <appender-ref ref="RemotingAppender" />

    </logger>
<!--
    <logger name="logAdoNet">
      <level value="ALL" />
      <appender-ref ref="AdoNetAppender" />
    </logger>-->
   
 
    <!--start LogFile Appender-->
    <appender name="regestg"  type="log4net.Appender.FileAppender" >
      <param name="File" value="log2.txt" />
      <param name="AppendToFile" value="true" />

      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern"  value="%n操作时间:%d [%t] %-5p %c %n 日志内容:- %m%n" />

      </layout>
    </appender>
    <!--end LogFile Appender-->

    <!--start Log logRollingFile由于定义了staticLogFileName 为true,以我的理解就是定位保存的log文件个数为10个(maxSizeRollBackups),同时设定了每个文件的大小为100KB,所以一直都保持有10个文件。RollingStyle设定rolling的触发器。
-->
    <appender  name ="RollingFileAppender"  type ="log4net.Appender.RollingFileAppender" >
      <param  name ="File"  value ="log\Log2.txt"   />
      <param  name ="AppendToFile"  value ="true"   />
      <param  name ="MaxSizeRollBackups"  value ="4"   />
      <param  name ="MaximumFileSize"  value ="2KB"   />
      <param  name ="RollingStyle"  value ="Size"   />
      <param  name ="StaticLogFileName"  value ="true"   />
      <layout  type ="log4net.Layout.PatternLayout" >
        <param  name ="ConversionPattern"  value ="%d [%t] %-5p %c [%x] - %m%n"   />
      </layout >
    </appender >
   
    <appender  name ="regest"  type ="log4net.Appender.RollingFileAppender" >
      <param  name ="File"  value ="log2\Log2.txt"   />
      <param  name ="AppendToFile"  value ="true"   />
      <param  name ="MaxSizeRollBackups"  value ="4"   />
      <param  name ="MaximumFileSize"  value ="2KB"   />
      <param  name ="RollingStyle"  value ="Size"   />
      <param  name ="StaticLogFileName"  value ="true"   />
      <layout  type ="log4net.Layout.PatternLayout" >
        <param  name ="ConversionPattern"  value ="%d [%t] %-5p %c [%x] - %m%n"   />
      </layout >
    </appender >
    <!--end Log logRollingFile-->

    <!--start AdoNet Appender-->
    <!--<appender  name ="AdoNetAppender"  type ="log4net.Appender.AdoNetAppender" >
      --><!--<bufferSize  value ="2"   />--><!--
      <connectionType  value ="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=b77a5c561934e089"   />
      <connectionString  value ="server=.;database=dbDemo;integrated security=false;persist security info=True;UID=sa;PWD=sa"   />
      <commandText  value ="INSERT INTO Log ([Date],[Thread],[Level],[log],[msg],[Exception]) VALUES (@log_date, @thread, @log_level, @log, @msg, @exception)"   />
      <parameter >
        <parameterName  value ="@log_date"   />
        <dbType  value ="DateTime"   />
        <layout  type ="log4net.Layout.RawTimeStampLayout"   />
      </parameter >
      <parameter >
        <parameterName  value ="@thread"   />
        <dbType  value ="String"   />
        <size  value ="255"   />
        <layout  type ="log4net.Layout.PatternLayout" >
          <conversionPattern  value ="%thread"   />
        </layout >
      </parameter >
      <parameter >
        <parameterName  value ="@log_level"   />
        <dbType  value ="String"   />
        <size  value ="50"   />
        <layout  type ="log4net.Layout.PatternLayout" >
          <conversionPattern  value ="%level"   />
        </layout >
      </parameter >
      <parameter >
        <parameterName  value ="@log"   />
        <dbType  value ="String"   />
        <size  value ="255"   />
        <layout  type ="log4net.Layout.PatternLayout" >
          <conversionPattern  value ="%logger"   />
        </layout >
      </parameter >
      <parameter >
        <parameterName  value ="@msg"   />
        <dbType  value ="String"   />
        <size  value ="4000"   />
        <layout  type ="log4net.Layout.PatternLayout" >
          <conversionPattern  value ="%message"   />
        </layout >
      </parameter >
      <parameter >
        <parameterName  value ="@exception"   />
        <dbType  value ="String"   />
        <size  value ="2000"   />
        <layout  type ="log4net.Layout.ExceptionLayout"   />
      </parameter >
    </appender >-->
    <!--end AdoNet Appender-->

  
  </log4net>

</configuration>

log4net.config内容

Global.asax 的

 

  void Application_Start(object sender, EventArgs e)
    {
        string filePath = Server.MapPath("~/log4net.config");

        System.IO.FileInfo fi1 = new System.IO.FileInfo(filePath);
      
        log4net.Config.DOMConfigurator.Configure(fi1); 
        // 在应用程序启动时运行的代码

    }
   

 

前台:

 

    protected void Button1_Click(object sender, EventArgs e)
    {
        int i = 10;
        int j = 0;

        try
        {
            int result = i / j;
        }
        catch (Exception ex)
        {
            //log4net.ILog log = log4net.LogManager.GetLogger("MyLogger");
            //log4net.ILog log1 = log4net.LogManager.GetLogger("logFile");
            //log1.Error("出错了1!", ex);

            log4net.ILog log2 = log4net.LogManager.GetLogger("logRollingFile");
            log2.Error("出错了2!", ex);


            log4net.ILog log3 = log4net.LogManager.GetLogger("romoteFile");
            log3.Error("出错555",ex);

            //log4net.ILog log3 = log4net.LogManager.GetLogger("logAdoNet");
            //log3.Error("出错了3!", ex);


        }

        Response.Write("ok");
    }

 

转载于:https://www.cnblogs.com/zhbsh/archive/2011/05/27/2059815.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值