log4net 在.net中的实际应用

简介
log4net是apache组织开发的日志组件, 可以从http://logging.apache.org/log4net/downloads.html下载log4net的源代码。同log4j一样(java下的日志记录组件)用户要在自己的程序里加入日志功能,只需将log4net.dll引入工程即可。是一个开源项目. 可以以插件的形式应用在你的系统中。程序员在使用ErrorLog做日志记录的时候完全不用关心log4net的工作方式,只需简单的调用即可。 

一:在winForm下的应用

     第一步:新增项目,添加log4net引用.        
     第二步:设置配置文件:
     建立对应项目的xml配置文件,log4net.config (log4net.config文件放在bin目录下)。文件内容如下:  
      1<?xml version="1.0" encoding="utf-8" ?>
 2<configuration>
 3    <configSections>
 4        <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
 5    </configSections>
 6    <log4net>
 7        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
 8            <layout type="log4net.Layout.PatternLayout">
 9                <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
10            </layout>
11        </appender>
12        <appender name="FileAppender" type="log4net.Appender.FileAppender">
13            <file value="c:/log-file.txt" />
14            <appendToFile value="true" />
15            <layout type="log4net.Layout.PatternLayout">
16                <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
17            </layout>
18        </appender>
19        <root>
20            <level value="INFO" />
21            <appender-ref ref="ConsoleAppender" />
22        </root>
23        <logger name="test.logger">
24            <level value="ALL" />
25            <appender-ref ref="FileAppender" />
26        </logger>        
27    </log4net>
28</configuration>   

  第三步:在程序中设置自动加载以及监视配置文件
    在AssemblyInfo.cs中增加如下语句: 
    [assembly: log4net.Config.XmlConfigurator(Watch=true,ConfigFile="log4net.config")]
    第四步:测试使用
    在窗体中增加一个按钮,    
    并在该按钮的Click事件中增加如下代码:
            private void trigLogger_Click(object sender, System.EventArgs e)
        {
            ILog log = LogManager.GetLogger("test.logger");
            log.Info("Hello,World!");
        }

二在asp.net 中应用

 第一步:编辑web.config

 先在web.config中的<configuration>节点下添加如下配置:

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

  <log4net>
    <!-- Define some output appenders -->
    <appender name="LogInfoFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="c:\log4net_info.txt"/>
      <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 - %m%n" />
      </layout>
    </appender>
    <!-- Define some output appenders -->
    <appender name="LogDebugFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="c:\log4net_debg.txt"/>
      <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 - %m%n" />
      </layout>
    </appender>
    <!-- Define some output appenders -->
    <appender name="LogErrorFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="c:\log4net_eror.txt"/>
      <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 - %m%n" />
      </layout>
    </appender>
    <!-- Define some output appenders -->
    <appender name="LogPerfFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="c:\log4net_perf.txt"/>
      <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 - %m%n" />
      </layout>
    </appender>
    <root>
      <level value="All"/>
    </root>
    <!-- Specify the level for some specific categories -->
    <logger name="GmccAdc.Logging.Info">
      <!-- <appender-ref ref="B" /> -->
      <level value="ALL"/>
      <appender-ref ref="LogInfoFileAppender"/>
    </logger>
    <logger name="GmccAdc.Logging.Debug">
      <!-- <appender-ref ref="B" /> -->
      <level value="ALL"/>
      <appender-ref ref="LogDebugFileAppender"/>
    </logger>
    <logger name="GmccAdc.Logging.Error">
      <!-- <appender-ref ref="B" /> -->
      <level value="ALL"/>
      <appender-ref ref="LogErrorFileAppender"/>
    </logger>
    <logger name="GmccAdc.Logging.Perf">
      <!-- <appender-ref ref="B" /> -->
      <level value="ALL"/>
      <appender-ref ref="LogPerfFileAppender"/>
    </logger>
  </log4net>

第二步编辑Global.asax的Application_Start

添加如下代码:
log4net.Config.DOMConfigurator.Configure();

第三步 编写测试

在要使用日志的类中引用log4net.dll 进行测试,可以写个类,把Logger放在app_code下

public class Logger
{
    // Fields
    private static readonly ILog logdebug = LogManager.GetLogger("GmccAdc.Logging.Debug");
    private static readonly ILog logerror = LogManager.GetLogger("GmccAdc.Logging.Error");
    private static readonly ILog loginfo = LogManager.GetLogger("GmccAdc.Logging.Info");
    private static readonly ILog logperf = LogManager.GetLogger("GmccAdc.Logging.Perf");

    // Methods
    public static ILog GetLogger(string loggerName)
    {
        return LogManager.GetLogger(loggerName);
       
    }

    public static void Log(string logmsg, string loggerName)
    {
        LogManager.GetLogger(loggerName).Info(logmsg);
    }

    public static void LogDebug(string debugInfo)
    {

        logdebug.Debug(debugInfo);

    }

    public static void LogError(string errorInfo)
    {

        logerror.Error(errorInfo);

    }

    public static void LogInfo(string info)
    {

        loginfo.Info(info);
    }

    public static void LogWarn(DateTime warnInfo)
    {

        logperf.Warn(warnInfo);

    }
}

在要调用日志的地方

Logger.info("你的信息");

posted on 2009-10-30 14:09  delphi2007  阅读(374)  评论(0编辑  收藏  举报