ASP.Net2.0使用Log4Net(一)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

第一种方法 在web.config中写配置文件

  1. Log4Net主页: http://logging.apache.org/log4net/,下载Log4Net
  2. 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联合使用,在配置文件中配置。 
  3. 使用步骤  

         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分钟就完成了,这么短的文章我却编排了几个小时,到最后才勉强差人意,真不知写了那么多的文章的人是怎么坚持下去的。

本文转自敏捷的水博客园博客,原文链接http://www.cnblogs.com/cnblogsfans/archive/2007/11/24/971032.html如需转载请自行联系原作者


王德水

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6月前
|
开发框架 前端开发 JavaScript
盘点72个ASP.NET Core源码Net爱好者不容错过
盘点72个ASP.NET Core源码Net爱好者不容错过
162 0
|
6月前
|
开发框架 .NET
ASP.NET Core NET7 增加session的方法
ASP.NET Core NET7 增加session的方法
88 0
|
存储 开发框架 前端开发
asp.net与asp.net优缺点及示例
asp.net与asp.net优缺点及示例
|
3月前
|
开发框架 .NET Docker
【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题
【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题
|
3月前
|
开发框架 JSON .NET
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
|
4月前
|
开发框架 搜索推荐 前端开发
【.NET全栈】ASP.NET开发Web应用——Web部件技术
【.NET全栈】ASP.NET开发Web应用——Web部件技术
|
3月前
|
开发框架 .NET 数据库连接
ASP.NET Core 标识(Identity)框架系列(一):如何使用 ASP.NET Core 标识(Identity)框架创建用户和角色?
ASP.NET Core 标识(Identity)框架系列(一):如何使用 ASP.NET Core 标识(Identity)框架创建用户和角色?
|
5月前
|
Linux C# C++
【.NET Developer】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务
本文介绍了如何使用VS2019和.NET框架创建一个Blazor应用,并将其部署到Azure应用服务。首先,Blazor是一个使用C#而非JavaScript构建交互式Web UI的框架,支持共享服务器和客户端应用逻辑,以及与Docker和Azure集成。任务包括创建Blazor项目,配置Dockerfile为Linux容器,本地测试,发布到Azure Container Registry (ACR),然后在Azure App Service for Container上部署。在部署过程中,需确保Docker设置正确,开启ACR的Admin访问权限,并监控镜像拉取和容器启动日志。
215 0
|
6月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
328 5
|
6月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
下一篇
无影云桌面