log4net用法

 

参考网上资料完成:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace DAL
{
  public  class LogHelper
    {
        //Log4net支持多种级别的日志。优先级从高到低依次排列如下:FATAL > ERROR > WARN > INFO > DEBUG
      //日志发送到文件显示
         public static readonly log4net.ILog logInfo = log4net.LogManager.GetLogger("logerror");
      //日志发送到文件显示
      public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("loginfo");
      //日志发送到系统日志显示
      public static readonly log4net.ILog logevent = log4net.LogManager.GetLogger("logevent");

      //日志发送到SQLSERVER数据库
      public static readonly log4net.ILog logSqlServer = log4net.LogManager.GetLogger("logSqlServer");
     
      public static void SetConfig()
      {
         log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config"));
      }
      public static void SetConfig(FileInfo configFile)
      {
          log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config"));
      }


      public static void WriteSqlServer(string info,Exception ex)
      {
          if(logSqlServer.IsInfoEnabled)
          {
              logSqlServer.Info(info,ex);
          }

          if (logSqlServer.IsErrorEnabled)
          {
              logSqlServer.Error(info,ex);
          }

          if(logSqlServer.IsFatalEnabled)
          {
              logSqlServer.Fatal(info,ex);
          }

          if(logSqlServer.IsWarnEnabled)
          {
              logSqlServer.Warn(info,ex);
          }

          if(logSqlServer.IsDebugEnabled)
          {
              logSqlServer.Debug(info,ex);
          }
      }

}

global.asax配置:

<%@ Application Language="C#" %>

<script runat="server">

    void Application_Start(object sender, EventArgs e)
    {
        //在应用程序启动时运行的代码
        DAL.LogHelper.SetConfig();
    }
   
    void Application_End(object sender, EventArgs e)
    {
        //在应用程序关闭时运行的代码

    }
       
    void Application_Error(object sender, EventArgs e)
    {
        //在出现未处理的错误时运行的代码
        Exception objExp = HttpContext.Current.Server.GetLastError();

    }

    void Session_Start(object sender, EventArgs e)
    {
        //在新会话启动时运行的代码

    }

    void Session_End(object sender, EventArgs e)
    {
        //在会话结束时运行的代码。
        // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
        // InProc 时,才会引发 Session_End 事件。如果会话模式
        //设置为 StateServer 或 SQLServer,则不会引发该事件。

    }
      
</script>

log4net.config信息

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

<configuration>

<configSections>
    <section name="log4net"  type="log4net.Config.Log4NetConfigurationSectionHandler" />
    </configSections>
 
  <log4net>
    <logger name="logerror">
      <level value="ERROR" />
      <appender-ref ref="ErrorAppender" />
    </logger>
    <logger name="loginfo">
      <level value="INFO" />
      <appender-ref ref="InfoAppender" />
    </logger>
    <logger name="logevent">
      <level value="INFO" />
      <appender-ref ref="EventLogAppender" />
    </logger>
    <logger name="logSqlServer">
      <level name="INFO"></level>
      <appender-ref ref="AdoNetAppender_SQL"></appender-ref>
    </logger>
    <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="d:\\Error" />
      <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&quot;.txt&quot;" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n异常时间:%d [%t] &lt;BR&gt;%n异常级别:%-5p
   &lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
        <param name="Header" value="************BEGIN************" />
        <param name="Footer" value="************END************" />
      </layout>
    </appender>
    <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="d:\\Info" />
      <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&quot;.txt&quot;" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="&lt;HR COLOR=blue&gt;%n日志时间:%d [%t] &lt;BR&gt;%n日志级别:%-5p
   &lt;BR&gt;%n日 志 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
        <param name="Header" value="************BEGIN************" />
        <param name="Footer" value="************END************" />
      </layout>
    </appender>
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <appender name="AdoNetAppender_SQL" type="log4net.Appender.ADONetAppender">
      <bufferSize value="10000" />
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <connectionString value="DATABASE=MyDB;SERVER=.;UID=sa;PWD=1;Connect Timeout=15;" />
      <commandText value="INSERT INTO ErrorLog ([dtDate],[sThread],[sLevel],[sLogger],[sMessage],[sException]) 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="100" />
        <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="500" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%logger" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@message" />
        <dbType value="String" />
        <size value="3000" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%m" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@exception" />
        <dbType value="String" />
        <size value="4000" />
        <layout type="log4net.Layout.ExceptionLayout" />
      </parameter>
    </appender>
  </log4net>  
</configuration>

DAL里的AssemblyInfo.cs里加一句

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

使用log4net进行日志记录的基本步骤如下: 1. 引入log4net库 在你的项目中引入log4net库,可以通过NuGet包管理器或手动添加dll文件的方式进行引入。 2. 配置log4net 在项目中添加一个log4net配置文件,命名为log4net.config或者其他名称,文件的格式可以是XML或者properties格式。在配置文件中设置日志记录器的级别、目的地(如控制台、文件、数据库等)、日志输出格式等信息。 3. 初始化log4net 在程序的入口处,通过log4net.Config.XmlConfigurator.Configure()或者其他方法进行log4net的初始化。 4. 记录日志 在需要记录日志的地方,通过log4net的ILog接口获取一个日志记录器,并使用不同级别的方法(如Debug、Info、Error等)记录不同级别的日志信息。 示例代码如下: ```csharp using log4net; namespace MyNamespace { public class MyClass { // 获取日志记录器 private static readonly ILog log = LogManager.GetLogger(typeof(MyClass)); public void MyMethod() { // 记录日志 log.Debug("debug message"); log.Info("info message"); log.Warn("warn message"); log.Error("error message"); log.Fatal("fatal message"); } } } ``` 需要注意的是,log4net的配置文件需要位于应用程序的根目录或者其他指定目录下,并且在初始化log4net之前必须加载配置文件。另外,log4net的日志记录器名称通常是使用类的全名(包括命名空间)作为前缀,以便于在配置文件中对不同的日志记录器进行配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值