Chinaunix首页 | 论坛 | 博客
  • 博客访问: 315847
  • 博文数量: 128
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1611
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-19 11:49
文章分类

全部博文(128)

文章存档

2018年(2)

2016年(2)

2014年(10)

2013年(114)

我的朋友

分类: Web开发

2013-11-19 09:48:10

log4net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。本文主要是简单的介绍如何在Visual Studio2010(Asp.Net Mvc3.0)中使用log4net快速创建系统日志,如何扩展以输出自定义字段

前言
用户可以从下载log4net的源代码。解压软件包后,在解压的src目录下将log4net.sln载入Visual Studio .NET,编译后可以得到log4net.dll。用户要在自己的程序里加入日志功能,只需将log4net.dll引入工程即可。

在项目中配置

第一步:首先在项目中引用log4net.dll文件。
第二步:在Web.config文件中进行添加configSections的节点

 代码如下:

 
   

   
 

第三步:添加log4net配置节点

 代码如下:




然后在log4net节点下添加
写入本地文本文件中的配置

 代码如下:

        
                     
                      
            
            
            
            
              
              
            
    
        


注释很清楚,就不解释了。
写入指定邮箱的配置

 代码如下:

       
       
           
           
           
           
           
           
           
           
           
           
              
           

           
                    
           

       


通过的是163邮箱服务器发送
将日志写入数据库的相关配置,还要建立一张对应的数据库表

 代码如下:

        
            
            
            
             unity3d教程
            
            
                
                
                
            

            
                
                
                
                
                   
               

            

            
                
                
                
                
                   
                

            

            
                
                
                
                
                    
                

            

            
                
                
                
                
                    
                

            

            
                
                
                
                
            

        


另外一种写入文件的方式配置

 代码如下:

        
            
            
            
            
            
            
               
            

        


在log4net节点中还有两个节点

 代码如下:

     
       
       
     

     
       
         
         
         
     


在框架的体系里,所有的日志对象都是根日志(root logger)的后代。 因此如果一个日志对象没有在配置文件里显式定义,则框架使用根日志中定义的属性。在标签里,可以定义level级别值和Appender的列表。如果没有定义LEVEL的值,则缺省为DEBUG。可以通过标签定义日志对象使用的Appender对象。声明了在其他地方定义的Appender对象的一个引用。在一个logger对象中的设置会覆盖根日志的设置。而对Appender属性来说,子日志对象则会继承父日志对象的Appender列表。这种缺省的行为方式也可以通过显式地设定标签的additivity属性为false而改变。
那么上面就会有数据库日志的写入和邮箱的写入
在Global.asax文件初始化配置

 代码如下:

        protected void Application_Start()
        {
            //读取日志  如果使用log4net,应用程序一开始的时候,都要进行初始化配置
            log4net.Config.XmlConfigurator.Configure();

            AreaRegistration.RegisterAllAreas();

            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);
        }

调用

 代码如下:

        private static readonly log4net.ILog log = log4net.LogManager.GetLogger("Loggering");
        public ActionResult About()
        {
             log.Info("log日志信息");
             log.Debug("debug信息");
             log.Error("error信息");
             log.Warn("warn信息");
             Exception ex = new Exception("测试的异常信息");
             log.Fatal("fatal信息", ex);
            return View();
        }

运行一下


Log4net中 DEBUG、INFO、WARN、ERROR 区分得很好。正常的 DEBUG、INFO 的日志, 就让它记录在 日志文件里面吧。
对于 WARN、ERROR 级别的日志, 记录到日志文件的同时, 顺便发送电子邮件到我的信箱里面。 这样一来, 我也不必每天去看日志文件, 二来,出了什么问题, 能及时通过电子邮件得到通知。
数据库结构

 代码如下:

create database Log4Net
go
use Log4Net
create table _log
(
    id int identity(1,1) primary key not null,
    date datetime null,
    thread int null,
    level varchar(10) null,
    logger varchar(20) null,
    Message varchar(100) null,
    Exception varchar(100) null
)

还待优化,有空了再来琢磨琢磨。
阅读(875) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~