----------------------Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
关于log4Net类的使用心得
————————巧妙的运用log4net类,来为你的系统添加点睛之笔------————————————————
系统日志,是现如今的系统之中必不可少的一项功能,它可以完美的记录系统当前的运行状况,以及错误报告,登录人员所做的操作,并可以以文本流或者数据库的方式存储。
方便维护人员和开发人员的查看。
下面我来介绍下log4Net的用法:
1.首先我们需要在网站或者程序中的配置文件中配置好Log4Net的配置节(这里以Web网站为例):
在网站的web.config 配置文件中添加Log4Net的配置节:
<!-- ===============log4net add start2=============== -->
<log4net debug="false">
<!--以文件方式输出并保存到d:\Application.log.txt-->
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="d:\Application.log.txt"/>
<param name="datePattern" value="MM-dd HH:mm"/>
<param name="AppendToFile" value="true"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/>
</layout>
</appender>
<!--以跟踪方式 Asp.net trace方式查看-->
<appender name="HttpTraceAppender" type="log4net.Appender.ASPNetTraceAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/>
</layout>
</appender>
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/>
</layout>
</appender>
<!--以流的方式输出并保存至文本-->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--输出方式的一种:文本保存到"E:\DCLog\yyyy-MM\yyyy-MM-dd.LOG"中-->
<file value="E:\Log\"/>
<datePattern value="yyyy-MM/yyyy-MM-dd.LOG"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<staticLogFileName value="false"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date [%-5level] %n -- %m%n"/>
</layout>
<!--输出方式的另一种:文本保存到"D:\Log.txt"中
<param name="File" value="D:\Log.txt"/>
<param name="AppendToFile" value="true"/>
<param name="MaxSizeRollBackups" value="10"/>
<param name="MaximumFileSize" value="5MB"/>
<param name="RollingStyle" value="Size"/>
<param name="StaticLogFileName" value="true"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/>
</layout>
-->
</appender>
<!--以数据库的方式输出,插入到SQL数据库(此处以SQL SERVER为例) -->
<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
<bufferSize value="0" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="server=.;database=JD_Test;uid=sa;pwd=123;timeout=300;" />
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%t" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="200" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%p" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="200" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%m" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>
<logger name="MyADOAppender">
<level value="DEBUG" />
<appender-ref ref="ADONetAppender" />
</logger>
<logger name="MyFileAppender">
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender"/>
</logger>
<root>
<level value="ALL" />
</root>
<!--<root>
<level value="ALL"/>
value="日志级别(OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL)"
<appender-ref ref="ADONetAppender"/>
ref="你所有的appender节点的name名称"
</root>-->
</log4net>
<!-- ===============log4net add end2=============== -->
appender配置节的各种使用意义:
AspNetTraceAppender
<appender name="AspNetTraceAppender" type="log4net.Appender.AspNetTraceAppender" >
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
这段配置可将日志信息输出到页面的Trace上下文环境。如果日志的级别低于WARN,会以System.Web.TraceContext.Write方法输出;如果级别为WARN或WARN以上则会以System.Web.TraceContext.Warn方法输出
BufferingForwardingAppender
<appender name="BufferingForwardingAppender" type="log4net.Appender.BufferingForwardingAppender" >
<bufferSize value="5"/>
<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="WARN"/>
</evaluator>
<appender-ref ref="LogFileAppender" />
<appender-ref ref="AspNetTraceAppender" />
</appender>
BufferingForwardingAppender的主要作用是将输出到指定类型(这里是LogFileAppender)的Appender的日志信息进行缓存。bufferSize属性指定了缓存的数量,如果value为5,那么将在信息量达到6条的时候,把这些日志批量输出。appender-ref属性指定了缓存的Appender类型,同root节点一样,这里可以指定多个。
FileAppender
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
<param name="File" value="WebUtilClient.log" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
File指定了文件名称,可以使用相对路径,此时日志文件的位置取决于项目的类型(如控制台、Windows Forms、ASP.NET等);也可以使用绝对路径;甚至可以使用环境变量,如<file value="${TMP}\log-file.txt" />。
AppendToFile指定是追加到还是覆盖掉已有的日志文件。
还可以添加如下属性<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />来使用最小锁定模型(minimal locking model),以允许多个进程可以写入同一个文件。
这里我只是去几个样例来讲解作为参考,其他很少用到的并未做讲解。
更多的配置节信息,请参考这里:http://logging.apache.org/log4net/release/config-examples.html#smtpappender
英文不难,可自己翻译下。
2. 在程序中调用的时候要添加引用 using log4net; 这里的log4net的dll自己事先要添加到网站的引用中来。
在程序中调用:
using log4net;
public class A
{
public void WriteExceptionLog(String messages)
{
//这里是 事先准备好的一个实体类,用来存日志信息的。
Text_LogInfo log = new Text_LogInfo ()
{
//其中一个属性。
Messages = messages
};
//在写日志前,先要调用日志接口,用来获取web.config配置文件中的配置节
ILog log2 = LogManager.Exists("MyFileAppender");
log2.Warn(" 错误信息:" + log.Messages);
}
}
以上代码是我以前做项目的时候写的一段记录错误日志的方法,并写了详细的注释,方便大家理解。
----------------------Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima