您的位置:首页 > 其它

Log4Net 配置和使用

2015-05-21 08:52 274 查看
web.config配置如下:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<configSections>

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />

</configSections>

<log4net>

<!--错误日志配置-->

<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">

<param name="File" value="Log\\LogError\\" />

<param name="AppendToFile" value="true" />

<param name="MaxSizeRollBackups" value="100" />

<param name="MaxFileSize" value="10240" />

<param name="StaticLogFileName" value="false" />

<param name="DatePattern" value="yyyyMMdd" />

<param name="RollingStyle" value="Date" />

<layout type="log4net.Layout.PatternLayout">

<param name="ConversionPattern" value="%n异常时间:%d [%t] %n异常级别:%-5p %n异 常 类:%c [%x] %n%m %n " />

</layout>

</appender>

<!--信息日志配置-->

<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">

<param name="File" value="Log\\LogInfo\\" />

<param name="AppendToFile" value="true" />

<param name="MaxFileSize" value="10240" />

<param name="MaxSizeRollBackups" value="100" />

<param name="StaticLogFileName" value="false" />

<param name="DatePattern" value="yyyyMMdd" />

<param name="RollingStyle" value="Date" />

<layout type="log4net.Layout.PatternLayout">

<param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c [%x] %n%m %n" />

</layout>

</appender>

<!--控制台-->

<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">

<layout type="log4net.Layout.PatternLayout">

<conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />

</layout>

</appender>

<!--log4net.LogManager.GetLogger("logerror")用这个来选择这种类型-->

<logger name="logerror">

<level value="ERROR" />

<appender-ref ref="ErrorAppender" />

</logger>

<logger name="loginfo">

<level value="INFO" />

<appender-ref ref="InfoAppender" />

</logger>

<root>

<level value="INFO" />

<appender-ref ref="InfoAppender" />

<appender-ref ref="ConsoleAppender" />

</root>

</log4net>

</configuration>

LOG操作类

using System;

using System.IO;

/**//// <summary>

/// LogHelper的摘要说明。

/// </summary>

public class LogHelper

{

private SystemLog()

{

}

public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo"); //选择<logger name="loginfo">的配置

public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror"); //选择<logger name="logerror">的配置

public static void SetConfig()

{

log4net.Config.XmlConfigurator.Configure();

}

public static void SetConfig(FileInfo configFile)

{

log4net.Config.XmlConfigurator.Configure(configFile);

}

public static void WriteLog(string info)

{

if(loginfo.IsInfoEnabled)

{

loginfo.Info(info);

}

}

public static void WriteLog(string info,Exception se)

{

if(logerror.IsErrorEnabled)

{

logerror.Error(info,se);

}

}

}

Global.asax.cs文件配置如下:

protected void Application_Start(Object sender, EventArgs e)

{

SystemLog.SetConfig();

}

protected void Application_Error(Object sender, EventArgs e)

{

Exception objExp = HttpContext.Current.Server.GetLastError();

LogHelper.WriteLog("\r\n客户机IP:"+ Request.UserHostAddress +"\r\n错误地址:"+ Request.Url +"\r\n异常信息:"+ Server.GetLastError().Message,objExp);

}

protected void Application_Start(Object sender, EventArgs e)

{

SystemLog.SetConfig();

}

protected void Application_Error(Object sender, EventArgs e)

{

Exception objExp = HttpContext.Current.Server.GetLastError();

LogHelper.WriteLog("\r\n客户机IP:"+ Request.UserHostAddress +"\r\n错误地址:"+ Request.Url +"\r\n异常信息:"+ Server.GetLastError().Message,objExp);

}

eg:

try

{}

catch(Exception ex)

{

LogHelper.WriteLog("ErrorInfo"ex);

}

以上本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/javc/archive/2009/03/25/4022677.aspx



1.调用步骤

1.config配置

2.初始化配置 log4net.Config.XmlConfigurator.Configure();

3.调用logger.Info("asdfasd");

2.细节详解

1.Log4net框架定义了一个叫做LogManager的类,用来管理所有的logger对象。它有一个GetLogger()静态方法,用我们提供的名字参数来检索已经存在的Logger对象。如果框架里不存在该Logger对象,它也会为我们创建一个Logger对象。代码如下所示:

log4net.ILog log = log4net.LogManager.GetLogger("logger-name");

通常来说,我们会以类(class)的类型(type)为参数来调用GetLogger(),以便跟踪我们正在进行日志记录的类。传递的类(class)的类型(type)可以用typeof(Classname)方法来获得,或者可以用如下的反射方法来获得:

log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

尽管符号长了一些,但是后者可以用于一些场合,比如获取调用方法的类(class)的类型(type)。

例: private void button1_Click(object sender, EventArgs e)

{

logger.Info("sdfasd");

}

System.Reflection.MethodBase.GetCurrentMethod().DeclaringType 就为button1_Click这个方法所在的类的类型

2.配置XmlConfigurator

使用代码初始化配置。

log4net.Config.XmlConfigurator.Configure(new FileInfo("test.log4net"));

使用 XmlConfigurator.ConfigureAndWatch() 方法除了初始化配置外,还会监测配置文件的变化,一旦发生修改,将自动刷新配置。

我们还可以使用 XmlConfiguratorAttribute 代替 XmlConfigurator.Config()/ConfigureAndWatch(),ConfiguratorAttribute 用于定义与 Assembly 相关联的配置文件名。

方式1: 关联到 test.log4net,并监测变化。

[assembly: log4net.Config.XmlConfigurator(ConfigFile="test.log4net", Watch=true)]

方式2: 关联到 test.exe.log4net (或 test.dll.log4net,文件名前缀为当前程序集名称),并监测变化。

[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension="log4net", Watch=true)]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: