log4net日志记录 轻松上手

log4net 简介

log4net是一个功能著名的开源日志记录组件。利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)中。并且我们还可以记载控制要记载的日志级别,可以记载的日志类别包括:FATAL(致命错误)、ERROR(一般错误)、WARN(警告)、INFO(一般信息)、DEBUG(调试信息)。

步骤一:通过Nuget安装log4net

在菜单栏中选择工具->Nuget 包管理器->管理解决方案的Nuget 包管理器,在浏览中的搜索框中输入log4net进行安装

log4net日志记录 轻松上手_第1张图片

步骤二:新建log4net.config配置文件

log4net日志记录 轻松上手_第2张图片

将以下的内容全部覆盖到新建的配置文件中


<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  configSections>
  <log4net>
    <root>
      <level value="DEBUG" />
      
      <appender-ref ref="InfoLogFileAppender"/>
      
      <appender-ref ref="DebugLogFileAppender"/>
      
      <appender-ref ref="ErrorLogFileAppender"/>
    root>

    
    <appender name="InfoLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="RollingStyle" value="Composite"/>
      <file value="Logs\info\"/>
      <param name="DatePattern" value="yyyyMM"\\"yyyyMMdd".log""/>
      <appendToFile value="true"/>
      <staticLogFileName value="false"/>
      <param name="MaximumFileSize" value="10MB"/>
      <param name="CountDirection" value="-1"/>
      <maxSizeRollBackups value="1000"/>
      <layout type="log4net.Layout.PatternLayout">
        
        
        
        <conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n"/>
        <param name="Footer" value="-------------------------------------------------------------- \r\n"/>
      layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="INFO" />
        <param name="LevelMax" value="INFO" />
      filter>
      
      <param name="lockingModel"  type="log4net.Appender.FileAppender+MinimalLock" />
    appender>

    
    <appender name="DebugLogFileAppender" type="log4net.Appender.RollingFileAppender">
      
      <param name="RollingStyle" value="Composite"/>
      
      <file value="Logs\debug\"/>
      <param name="DatePattern" value="yyyyMM"\\"yyyyMMdd".log""/>
      
      <appendToFile value="true"/>
      
      <staticLogFileName value="false"/>
      
      <param name="MaximumFileSize" value="10MB"/>
      
      <param name="CountDirection" value="-1"/>
      
      <maxSizeRollBackups value="1000"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="记录时间:%date %n调试输出:%message %newline %n"/>
        <param name="Footer" value="[Footer]\r\n"/>
      layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="DEBUG" />
        <param name="LevelMax" value="DEBUG" />
      filter>
      <param name="lockingModel"  type="log4net.Appender.FileAppender+MinimalLock" />
    appender>

    
    <appender name="ErrorLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="RollingStyle" value="Composite"/>
      <file value="Logs\error\"/>
      <param name="DatePattern" value="yyyyMM"\\"yyyyMMdd".log""/>
      <appendToFile value="true"/>
      <staticLogFileName value="false"/>
      <param name="MaximumFileSize" value="1MB"/>
      <param name="CountDirection" value="-1"/>
      <maxSizeRollBackups value="1000"/>
      <layout type="log4net.Layout.PatternLayout">
        
        
        
        <conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n"/>
        <param name="Footer" value="-------------------------------------------------------------- \r\n"/>
      layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="ERROR" />
        <param name="LevelMax" value="ERROR" />
      filter>
      
      <param name="lockingModel"  type="log4net.Appender.FileAppender+MinimalLock" />
    appender>

  log4net>
configuration>

步骤三:新建LogHelper静态类

/*
 log4net默认关联的是应用程序的配置文件App.config(BS程序是Web.config),可以使用程序集自定义属性来进行设置。下面来介绍一下这个自定义属性:log4net.Config.XmlConifguratorAttribute。

XmlConfiguratorAttribute有3个属性:

ConfigFile: 配置文件的名字,文件路径相对于应用程序目录

(AppDomain.CurrentDomain.BaseDirectory)。ConfigFile属性不能和ConfigFileExtension属性一起使用。

ConfigFileExtension: 配置文件的扩展名,文件路径相对于应用程序的目录。ConfigFileExtension属性不能和ConfigFile属性一起使用。

Watch: 如果将Watch属性设置为true,就会监视配置文件。当配置文件发生变化的时候,就会重新加载。

如果ConfigFile和ConfigFileExtension都没有设置,则使用应用程序的配置文件App.config(Web.config)。

*/

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
namespace WebApplication4
{
    public static class LogHelper
    {

        #region 方法 输出致命错误

        /// 
        /// 输出致命错误
        /// 
        /// 发生错误的类的类型
        /// 错误信息
        public static void WriteErrorLog(Type t, Exception ex)
        {
            var log = log4net.LogManager.GetLogger(t);
            log.Error("Error", ex);
        }

        #endregion

    }
}

恭喜你成功配置log4net

把下面示例代码添加到你的启动程序中,当执行后,可以在解决方案目录下找到Logs文件夹

      LogHelper.WriteErrorlLog(typeof(_Default), new Exception("模拟发生错误"));

log4net日志记录 轻松上手_第3张图片

后记:

在具体写日志时,一般可以这样理解日志等级:

FATAL(致命错误):记录系统中出现的能使用系统完全失去功能,服务停止,系统崩溃等使系统无法继续运行下去的错误。例如,数据库无法连接,系统出现死循环。

ERROR(一般错误):记录系统中出现的导致系统不稳定,部分功能出现混乱或部分功能失效一类的错误。例如,数据字段为空,数据操作不可完成,操作出现异常等。

WARN(警告):记录系统中不影响系统继续运行,但不符合系统运行正常条件,有可能引起系统错误的信息。例如,记录内容为空,数据内容不正确等。

INFO(一般信息):记录系统运行中应该让用户知道的基本信息。例如,服务开始运行,功能已经开户等。

DEBUG (调试信息):记录系统用于调试的一切信息,内容或者是一些关键数据内容的输出。

你可能感兴趣的:(C#)