log4net 在.net中的实际应用

本文详细介绍log4net日志组件在WinForm和ASP.NET环境下的配置与使用方法,包括配置文件设置、自动加载、监视配置文件及各类日志记录示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介
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("你的信息");

转载于:https://www.cnblogs.com/delphi2007/articles/1593032.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值