zoukankan      html  css  js  c++  java
  • log4net使用具体解释

    说明:本程序演示怎样利用log4net记录程序日志信息。log4net是一个功能著名的开源日志记录组件。利用log4net能够方便地将日志信息记录到文件、控制台、Windows事件日志和数据库(包含MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)中。而且我们还能够记载控制要记载的日志级别,能够记载的日志类别包含:FATAL(致命错误)、ERROR(一般错误)、WARN(警告)、INFO(一般信息)、DEBUG(调试信息)。要想获取最新版本号的log4net组件库,能够到官方站点http://logging.apache.org/log4net/下载。如今的最新版本号是1.2.10。

    以下的样例展示了怎样利用log4net记录日志 。

    首先从官方站点下载近期版本号的log4net组件,如今的最新版本号是1.2.10。在程序中我们仅仅须要log4net.dll文件即可了,加入�对log4net.dll的引用,就能够在程序中使用了。

    接着我们配置相关的配置文件(WinForm相应的是*.exe.config,WebForm相应的是*.config),本实例中是控制台应用程序,配置例如以下(附各配置的说明):

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      
    <configSections>
        
    <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
      
    </configSections>
      
    <appSettings>
      
    </appSettings>
      
    <log4net>
        
    <!--定义输出到文件里-->
        
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
          
    <!--定义文件存放位置-->
          
    <file value="D:/log4netfile.txt" />
          
    <appendToFile value="true" />
          
    <rollingStyle value="Date" />
          
    <datePattern value="yyyyMMdd-HH:mm:ss" />
          
    <layout type="log4net.Layout.PatternLayout">
            
    <!--每条日志末尾的文字说明-->
            
    <footer value="by 周公" />
            
    <!--输出格式-->
            
    <!--例子:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
            
    <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描写叙述:%message%newline" />
          
    </layout>
        
    </appender>
        
    <!--定义输出到控制台命令行中-->
        
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
          
    <layout type="log4net.Layout.PatternLayout">
            
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
          
    </layout>
        
    </appender>
        
    <!--定义输出到windows事件中-->
        
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
          
    <layout type="log4net.Layout.PatternLayout">
            
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
          
    </layout>
        
    </appender>
        
    <!--定义输出到数据库中,这里举例输出到Access数据库中,数据库为C盘的log4net.mdb-->
        
    <appender name="AdoNetAppender_Access" type="log4net.Appender.AdoNetAppender">
          
    <connectionString value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:log4net.mdb" />
          
    <commandText value="INSERT INTO LogDetails ([LogDate],[Thread],[Level],[Logger],[Message]) VALUES (@logDate, @thread, @logLevel, @logger,@message)" />
          
    <!--定义各个參数-->
          
    <parameter>
            
    <parameterName value="@logDate" />
            
    <dbType value="String" />
            
    <size value="240" />
            
    <layout type="log4net.Layout.PatternLayout">
              
    <conversionPattern value="%date" />
            
    </layout>
          
    </parameter>
          
    <parameter>
            
    <parameterName value="@thread" />
            
    <dbType value="String" />
            
    <size value="240" />
            
    <layout type="log4net.Layout.PatternLayout">
              
    <conversionPattern value="%thread" />
            
    </layout>
          
    </parameter>
          
    <parameter>
            
    <parameterName value="@logLevel" />
            
    <dbType value="String" />
            
    <size value="240" />
            
    <layout type="log4net.Layout.PatternLayout">
              
    <conversionPattern value="%level" />
            
    </layout>
          
    </parameter>
          
    <parameter>
            
    <parameterName value="@logger" />
            
    <dbType value="String" />
            
    <size value="240" />
            
    <layout type="log4net.Layout.PatternLayout">
              
    <conversionPattern value="%logger" />
            
    </layout>
          
    </parameter>
          
    <parameter>
            
    <parameterName value="@message" />
            
    <dbType value="String" />
            
    <size value="240" />
            
    <layout type="log4net.Layout.PatternLayout">
              
    <conversionPattern value="%message" />
            
    </layout>
          
    </parameter>
        
    </appender>
        
    <!--定义日志的输出媒介,以下定义日志以四种方式输出。也能够以下的依照一种类型或其它类型输出。-->
        
    <root>
          
    <!--文件形式记录日志-->
          
    <appender-ref ref="LogFileAppender" />
          
    <!--控制台控制显示日志-->
          
    <appender-ref ref="ConsoleAppender" />
          
    <!--Windows事件日志-->
          
    <appender-ref ref="EventLogAppender" />
          
    <!-- 假设不启用对应的日志记录,能够通过这样的方式凝视掉
          <appender-ref ref="AdoNetAppender_Access" />
          
    -->
        
    </root>
        
      
    </log4net>
    </configuration>

    程序文件:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Windows.Forms;
    using System.Reflection;
    using log4net;

    //注意以下的语句一定要加上,指定log4net使用.config文件来读取配置信息
    //假设是WinForm(假定程序为MyDemo.exe,则须要一个MyDemo.exe.config文件)
    //假设是WebForm,则从web.config中读取相关信息
    [assembly: log4net.Config.XmlConfigurator(Watch = true)]
    namespace Log4NetDemo
    {
        
    /// <summary>
        
    /// 说明:本程序演示怎样利用log4net记录程序日志信息。log4net是一个功能著名的开源日志记录组件。
        
    /// 利用log4net能够方便地将日志信息记录到文件、控制台、Windows事件日志和数据库中(包含MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)。
        
    /// 以下的样例展示了怎样利用log4net记录日志
        
    /// 作者:周公
        
    /// 时间:2008-3-26
        
    /// 首发地址:http://blog.csdn.net/zhoufoxcn/archive/2008/03/26/2220533.aspx
        
    /// </summary>
        public class MainClass
        {
            
    public static void Main(string[] args)
            {
                
    //Application.Run(new MainForm());
                
    //创建日志记录组件实例
                ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
                
    //记录错误日志
                log.Error("error",new Exception("发生了一个异常"));
                
    //记录严重错误
                log.Fatal("fatal",new Exception("发生了一个致命错误"));
                
    //记录一般信息
                log.Info("info");
                
    //记录调试信息
                log.Debug("debug");
                
    //记录警告信息
                log.Warn("warn");
                Console.WriteLine(
    "日志记录完成。");
                Console.Read();
            }
        }
    }

    执行结果:

    控制台上的输出


    日志文件内容

    在这里须要特别说明一下,注意上面的代码中有这么一句:[assembly: log4net.Config.XmlConfigurator(Watch = true)](在须要使用log4net的类的namespace处),假设没有这句就会在调试时得到例如以下留言中所说的“程序调试起来时isDebugEnable"的情况,希望大家注意。 

    关于未尽之处,请看周公对以下读者的一些问题的答复《Log4Net使用具体解释(续)》

  • 相关阅读:
    支持向量机SVM知识点概括
    决策树知识点概括
    HDU 3081 Marriage Match II
    HDU 3572 Task Schedule
    HDU 4888 Redraw Beautiful Drawings
    Poj 2728 Desert King
    HDU 3926 Hand in Hand
    HDU 1598 find the most comfortable road
    HDU 4393 Throw nails
    POJ 1486 Sorting Slides
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/3842928.html
Copyright © 2011-2022 走看看