log4net的使用详解

来源:百度文库 编辑:神马文学网 时间:2024/05/06 05:17:15
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),本实例中是控制台应用程序,配置如下(附各配置的说明):view plaincopy to clipboardprint?
01.  
02.  
03.    
04.   
  
05.    
06.    
07. 
  
08.    
09.  
10.          
11.              
12.              
13.              
14.              
15.              
16.              
17.              
18.              
19.                  
20.           
  
21.       
  
22.      
23.      
24.        
25.        
26.        
27.        
28.        
29.        
30.          
31.       
  
32.          
33.          
34.          
35.        
36.      
37.      
38.      
39.        
40.          
41.     
  
42.   
  
43.      
44.      
45.        
46.          
47.     
  
48.   
  
49.      
50.      
51.        
52.        
53.        
54.        
55.          
56.          
57.          
58.          
59.            
60.       
  
61.     
  
62.        
63.          
64.          
65.          
66.          
67.            
68.       
  
69.     
  
70.        
71.          
72.          
73.          
74.          
75.            
76.       
  
77.     
  
78.        
79.          
80.          
81.          
82.          
83.            
84.       
  
85.     
  
86.        
87.          
88.          
89.          
90.          
91.            
92.       
  
93.     
  
94.   
  
95.      
96.      
97.        
98.  
99.        
100.        
101.        
102.        
103.        
104.        
107.   
      
108.    
109. 


 
   

 
 
 

 

  
   
   
   
   
   
   
   
   
    
   

  

   
   
     
     
     
     
     
     
       
       

       
       
       
     
   
   
   
     
       
     

   

   
   
     
       
     

   

   
   
     
     
     
     
       
       
       
       
         
       

     

     
       
       
       
       
         
       

     

     
       
       
       
       
         
       

     

     
       
       
       
       
         
       

     

     
       
       
       
       
         
       

     

   

   
   
     

     
     
     
     
     
     
   
   
 
测试代码view plaincopy to clipboardprint?
01.using System;  
02.using System.Collections.Generic;  
03.using System.Text;  
04.using System.Windows.Forms;  
05.using System.Reflection;  
06.using log4net;  
07.//注意下面的语句一定要加上,指定log4net使用.config文件来读取配置信息  
08.//如果是WinForm(假定程序为MyDemo.exe,则需要一个MyDemo.exe.config文件)  
09.//如果是WebForm,则从web.config中读取相关信息  
10.[assembly: log4net.Config.XmlConfigurator(Watch = true)]  
11.namespace Log4NetDemo  
12.{  
13.    ///   
14.    /// 说明:本程序演示如何利用log4net记录程序日志信息。log4net是一个功能著名的开源日志记录组件。  
15.    /// 利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库中(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)。    
16.    ///
  
17.    public class MainClass  
18.    {  
19.        public static void Main(string[] args)  
20.        {  
21.            //Application.Run(new MainForm());  
22.            //创建日志记录组件实例  
23.            ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);  
24.            //记录错误日志  
25.            log.Error("error",new Exception("发生了一个异常"));  
26.            //记录严重错误  
27.            log.Fatal("fatal",new Exception("发生了一个致命错误"));  
28.            //记录一般信息  
29.            log.Info("info");  
30.            //记录调试信息  
31.            log.Debug("debug");  
32.            //记录警告信息  
33.            log.Warn("warn");  
34.            Console.WriteLine("日志记录完毕。");  
35.            Console.Read();  
36.        }  
37.    }  
38.} 
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
{
    ///
    /// 说明:本程序演示如何利用log4net记录程序日志信息。log4net是一个功能著名的开源日志记录组件。
    /// 利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库中(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)。 
    ///

    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();
        }
    }
}  下面是便是强大的LogHelper类,如果用于web,注意记得在global.asax里面调用LogHelper里的init初始化方法。view plaincopy to clipboardprint?
01.using System;  
02.using System.Collections.Generic;  
03.using System.Text;  
04.using log4net;  
05.[assembly: log4net.Config.XmlConfigurator(Watch = true)]  
06.namespace The9web.Common  
07.{  
08.    public class LogHelper  
09.    {  
10.        ///   
11.        /// 静态类  
12.        ///
  
13.        private LogHelper() { }  
14.        private const string LOG_REPOSITORY = "Default"; // this should likely be set in the web config.  
15.        private static ILog m_log;  
16.        ///   
17.        /// 初始化日志系统  
18.        /// 在系统运行开始初始化  
19.        /// Global.asax Application_Start内  
20.        ///
  
21.        public static void Init()  
22.        {  
23.            log4net.Config.XmlConfigurator.Configure();  
24.        }  
25.        ///   
26.        /// 写入日志  
27.        ///
  
28.        /// 日志信息  
29.        /// 日志类型  
30.        public static void Write(string message, LogMessageType messageType)  
31.        {  
32.            DoLog(message, messageType, null, Type.GetType("System.Object"));  
33.        }  
34.        ///   
35.        /// 写入日志  
36.        ///
  
37.        /// 日志信息  
38.        /// 日志类型  
39.        ///   
40.        public static void Write(string message, LogMessageType messageType, Type type)  
41.        {  
42.            DoLog(message, messageType, null, type);  
43.        }  
44.        ///   
45.        /// 写入日志  
46.        ///
  
47.        /// 日志信息  
48.        /// 日志类型  
49.        /// 异常  
50.        public static void Write(string message, LogMessageType messageType, Exception ex)  
51.        {  
52.            DoLog(message, messageType, ex, Type.GetType("System.Object"));  
53.        }  
54.        ///   
55.        /// 写入日志  
56.        ///
  
57.        /// 日志信息  
58.        /// 日志类型  
59.        /// 异常  
60.        ///   
61.        public static void Write(string message, LogMessageType messageType, Exception ex,  
62.                                 Type type)  
63.        {  
64.            DoLog(message, messageType, ex, type);  
65.        }  
66.        ///   
67.        /// 断言  
68.        ///
  
69.        /// 条件  
70.        /// 日志信息  
71.        public static void Assert(bool condition, string message)  
72.        {  
73.            Assert(condition, message, Type.GetType("System.Object"));  
74.        }  
75.        ///   
76.        /// 断言  
77.        ///
  
78.        /// 条件  
79.        /// 日志信息  
80.        /// 日志类型  
81.        public static void Assert(bool condition, string message, Type type)  
82.        {  
83.            if (condition == false)  
84.                Write(message, LogMessageType.Info);  
85.        }  
86.        ///   
87.        /// 保存日志  
88.        ///
  
89.        /// 日志信息  
90.        /// 日志类型  
91.        /// 异常  
92.        /// 日志类型  
93.        private static void DoLog(string message, LogMessageType messageType, Exception ex,  
94.                                  Type type)  
95.        {  
96.            m_log = LogManager.GetLogger(type);  
97.            switch (messageType)  
98.            {  
99.                case LogMessageType.Debug:  
100.                    LogHelper.m_log.Debug(message, ex);  
101.                    break;  
102.                case LogMessageType.Info:  
103.                    LogHelper.m_log.Info(message, ex);  
104.                    break;  
105.                case LogMessageType.Warn:  
106.                    LogHelper.m_log.Warn(message, ex);  
107.                    break;  
108.                case LogMessageType.Error:  
109.                    LogHelper.m_log.Error(message, ex);  
110.                    break;  
111.                case LogMessageType.Fatal:  
112.                    LogHelper.m_log.Fatal(message, ex);  
113.                    break;  
114.            }  
115.        }  
116.        ///   
117.        /// 日志类型  
118.        ///
  
119.        public enum LogMessageType  
120.        {  
121.            ///   
122.            /// 调试  
123.            ///
  
124.            Debug,  
125.            ///   
126.            /// 信息  
127.            ///
  
128.            Info,  
129.            ///   
130.            /// 警告  
131.            ///
  
132.            Warn,  
133.            ///   
134.            /// 错误  
135.            ///
  
136.            Error,  
137.            ///   
138.            /// 致命错误  
139.            ///
  
140.            Fatal  
141.        }  
142.    }  
143.} 
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kevonz/archive/2010/01/09/5159429.aspx