Log4net相关说明
几乎所有的大型应用都会有自己的用于跟踪调试的API。因为一旦程序被部署以后,就不太可能再利用专门的调试工具了。然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题。
经验表明,日志记录往往是软件开发周期中的重要组成部分。它具有以下几个优点:它可以提供应用程序运行时的精确环境,可供开发人员尽快找到应用程序中的Bug;一旦在程序中加入了Log 输出代码,程序运行过程中就能生成并输出日志信息而无需人工干预。另外,日志信息可以输出到不同的地方(控制台,文件等)以备以后研究之用。
Log4net就是为这样一个目的设计的,用于.NET开发环境的日志记录包。
Log4net配置步骤
1. 在自己的程序中引用log4net.dll文件 下载地址:http://logging.apache.org/log4net/download_log4net.cgi
注意版本要选择正确了
2. 在项目中新建Log4Net.config配置文件,将原有代码删除,放上官方配置代码:
官方的文档说明:http://logging.apache.org/log4net/release/config-examples.html
里面说的配置很详尽,比如 SQL数据库怎么配置,Oracle的怎么配置,怎么配置发送邮件的等等
下面的代码给个范例,附加说明:
<?xml version="1.0" encoding="utf-8"?>
<!--
注意: 除了手动编辑此文件以外,您还可以使用
Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
“网站”->“Asp.Net 配置”选项。
设置和注释的完整列表在
machine.config.comments 中,该文件通常位于
/Windows/Microsoft.Net/Framework/v2.x/Config 中
-->
<configuration>
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
<log4net>
<logger name="loggerAX">
<!--control log level: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
<!--如果没有定义LEVEL的值,则缺省为DEBUG-->
<level value="ALL" />
<appender-ref ref="SmtpAppenderAX"></appender-ref>
<appender-ref ref="FileAppenderAX"></appender-ref>
</logger>
<appender name="SmtpAppenderAX" type="log4net.Appender.SmtpAppender">
<!--这个丢弃可能邮件发送不了-->
<authentication value="Basic" />
<to value="to@domain.com"></to>
<from value="from@domain.com" />
<subject value="AX'Test Log Message" />
<smtpHost value="smtp.163.com" />
<username value="发送邮箱的用户名" />
<password value="密码" />
<bufferSize value="2048" />
<!--超长部分是否丢弃-->
<lossy value="false" />
<!--输出级别在WARN和OFF之间的日志-->
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="WARN" />
<param name="LevelMax" value="OFF" />
</filter>
<!--日志格式布局-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] : %newline%message%newline" />
</layout>
</appender>
<appender name="FileAppenderAX" type="log4net.Appender.RollingFileAppender">
<!--绝对路径-->
<file value="D://log.txt"></file>
<!--相对路径,在项目的根目录下-->
<!--以最后一个路径为准,所以上面的绝对路径下不会写日志-->
<file value="./Log/server.log.txt"></file>
<!--防止多线程时不能写Log,官方说线程非安全-->
<!--实际使用时,本地测试正常,部署后有不能写日志的情况-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<appendToFile value="true" />
<!--可以为:Once|Size|Date|Composite-->
<!--Composite为Size和Date的组合-->
<rollingStyle value="composite" />
<!--日志最大个数,都是最新的-->
<!--rollingStyle节点为Date时,该节点不起作用-->
<!--rollingStyle节点为Size时,只能有value个日志-->
<!--rollingStyle节点为Composite时,每天有value个日志-->
<maxSizeRollBackups value="10" />
<!--当备份文件时,为文件名加的后缀-->
<!--后缀为*.txt时,例:AX.txt_2008-07-24.PxP 应该是程序上的一个bug-->
<!--后缀为*.TXT时,例:AX.txt_2008-07-25.TXT-->
<datePattern value="yyyy-MM-dd.TXT" />
<!--可用的单位:KB|MB|GB-->
<!--不要使用小数,否则会一直写入当前日志-->
<maximumFileSize value="1KB" />
<!--置为true,当前最新日志文件名永远为file节中的名字-->
<staticLogFileName value="true" />
<!--输出级别在INFO和ERROR之间的日志-->
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="ERROR" />
</filter>
<!--必须结合起来用,第一个只过滤出WARN,第二个拒绝其它其它日志输出-->
<filter type="log4net.Filter.LevelMatchFilter">
<param name="LevelToMatch" value="WARN" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
</layout>
</appender>
</log4net>
</configuration>
<!--==================layout节点的配置说明======================-->
%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
%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.
<!--=========================================================-->
3. 新建一个写log的类,我的在common的类库下新建的
并在通用类层(Common)的assemblyinfo.cs 里加上
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
表示引用该配置文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Common
{
public class Log
{
private static log4net.ILog log = log4net.LogManager.GetLogger("loggerAX");
public static void Debug(string message)
{
if (log.IsDebugEnabled)
{
log.Debug(message);
}
}
public static void Debug(System.Exception ex1)
{
if (log.IsDebugEnabled)
{
log.Debug(ex1.Message.ToString() + "/r/n" + ex1.Source.ToString() + "/r/n" +
ex1.TargetSite.ToString() + "/r/n" + ex1.StackTrace.ToString());
}
}
public static void Error(string message)
{
if (log.IsErrorEnabled)
{
log.Error(message);
}
}
public static void Fatal(string message)
{
if (log.IsFatalEnabled)
{
log.Fatal(message);
}
}
public static void Info(string message)
{
if (log.IsInfoEnabled)
{
log.Info(message);
}
}
public static void Warn(string message)
{
if (log.IsWarnEnabled)
{
log.Warn(message);
}
}
}
}
Log4net的使用
新建一个default.aspx文件,在page_load中写:
protected void Page_Load(object sender, EventArgs e)
{
Common.Log.Debug("haha,wo shi ceshi de wa ");
Common.Log.Error("我是error");
Common.Log.Info("我是info'");
Common.Log.Warn("我是warn");
try
{
Log.Info("这是hansong的LOG INFO测试!");
Log.Debug("这是hansong的LOG DEBUG测试!");
throw new Exception("这是hansong的LOG ERROR测试!");
}
catch (Exception er)
{
Log.Error("错误日志"+ er);
}
}
浏览页面,我们会发现项目下面会自动新建一个log文件夹,且文件夹里面有一个log.txt档,里面放的就是日志文件了
server.log.txt里面的内容:
Log4net写日志原则
1.在catch后,把异常写入日志.
2.在调用第三方控件的开始和结束处.
3.在连接数据库的开始结束处.
4.除非必要,不要在循环体中加入日志,否则一旦出问题可能导致日志暴增.
5.在自己认为很重要的逻辑处写入日志.
参考文档:
http://blog.csdn.net/huwei2003/article/details/6060201
http://www.cnblogs.com/dragon/archive/2005/03/24/124254.html
分享到:
相关推荐
《log4net配置使用详解》 log4net是一款在.NET平台上广泛使用的日志记录组件,它源于Apache的log4j项目,为开发者提供了强大的日志管理功能。通过灵活的配置,log4net可以将日志信息按照不同级别、不同格式输出到...
《深入理解log4net配置及其Demo实践》 log4net是.NET平台上的一款强大且灵活的日志记录框架,广泛应用于各种项目中,提供了一种结构化、可扩展的日志记录方式。本文将深入探讨log4net的配置细节,并通过实际的Demo...
本实例将详细介绍如何在WinForm应用中配置和使用Log4Net。 首先,我们要理解Log4Net的基本概念。Log4Net提供了一个可扩展的框架,通过定义不同的Appenders(输出目标),Layouts(输出格式)以及Filters(过滤规则...
本源码配置环境:vs2010+sql2008,目前使用了文件记录方式和数据库记录方式两种可以正常运行具体使用说明请查看http://www.sendawangluo.com/shoujiwangzhan/7042135.html
`<configSections>`用于声明将要使用的配置节,这里声明了名为"log4net"的节,类型指定为`log4net.Config.Log4NetConfigurationSectionHandler,log4net`。 接着,我们需要在程序的Assembly.cs文件中添加一行特殊的...
**log4net配置详解** 在C#开发中,日志记录是不可或缺的一部分,它帮助开发者追踪程序运行状态、定位错误和异常,以及进行性能分析。log4net是Apache的一个开源项目,提供了一种灵活且可扩展的日志记录框架,广泛...
在代码中,首先需要初始化log4net配置,这通常在应用程序启动时完成。然后,可以通过获取Logger实例并调用其方法来记录日志,如`logger.Debug("这是一个调试信息")`。 ```csharp using log4net; using System; ...
为了在程序启动时初始化log4net配置,需要在相应入口点调用`log4net.Config.XmlConfigurator.Configure()`。对于控制台应用程序,这通常在`Program.cs`的`Main`方法中进行;对于Web应用程序,可以在`Global.asax.cs`...
**log4net配置详解** log4net是一款广泛应用于.NET平台的日志记录框架,它提供了一套强大且灵活的机制,帮助开发者记录应用程序运行时的信息。本文将深入解析log4net的配置及其主要组件。 **一、log4net的组件结构...
**Log4net配置应用** Log4net是一款广泛应用于.NET Framework中的日志记录工具,由Apache软件基金会开发。它提供了一种灵活且强大的机制,用于控制应用程序的日志输出,包括错误日志、调试信息以及性能跟踪等。在VS...
**log4net配置和应用示例** 在软件开发过程中,日志记录是不可或缺的一部分,它帮助开发者追踪程序运行状态,定位错误和异常。log4net是.NET Framework下的一款强大、灵活的日志记录工具,它源自Java平台的log4j,...
**log4net配置说明及相关文件** 在软件开发中,日志记录是不可或缺的一部分,它能够帮助开发者追踪程序运行状态,定位错误和异常。log4net是.NET Framework中一个广泛使用的日志记录工具,由Apache软件基金会开发。...
博客链接提供了更多关于Log4net使用的具体示例和注意事项,包括如何调试配置、如何处理多线程环境下的日志记录以及如何在Web应用程序中正确配置等。 总之,Log4net作为强大的日志框架,为.NET开发者提供了高效、...
**log4net配置实例下载** 在软件开发过程中,日志记录是至关重要的,它能帮助开发者追踪程序运行状态,定位错误源头。Log4net是一款强大的、灵活的日志记录框架,广泛应用于.NET平台,由Apache软件基金会开发。本...
**log4net 使用代码配置详解** `log4net` 是一个强大的日志记录框架,广泛应用于.NET应用程序中,提供灵活的日志输出配置和多种日志记录目标。在传统的配置方式中,我们通常会通过XML配置文件(如 `log4net.config`...
本文将详细介绍如何使用log4net配置根据日期生成文件,并且根据日志级别(INFO、ERROR)生成不同的文件。 #### 一、log4net简介 log4net是一个开放源代码的日志框架,用于.NET平台的应用程序。它基于Apache Logging ...
"Log4net配置样题(Winform)"这个标题表明这是一个关于使用log4net在Windows Forms(Winform)应用程序中进行日志记录的实例教程或示例项目。Log4net是Apache软件基金会的一个开源项目,提供了一个灵活且强大的日志...
本话题将详细介绍如何使用C#封装`log4net`类以及配置文件,以便更方便地进行日志管理。 首先,`log4net.dll`是`log4net`的核心库,包含了各种日志记录器、布局器和Appender等组件。`log4net.dll.config`文件是用于...
然后,在C#代码中,通过使用`log4net.Config.XmlConfigurator.Configure()`方法初始化log4net配置。接着,你可以使用`ILog`接口来记录日志,例如: ```csharp using log4net; using log4net.Config; private ...
log4net配置文件