美文网首页
C# 优秀的开源日志记录组件--Log4Net 随笔(待续...

C# 优秀的开源日志记录组件--Log4Net 随笔(待续...

作者: 有种境界叫loser | 来源:发表于2019-05-16 17:47 被阅读0次

概述

一个功能著名的开源日志记录组件,各语言都有相应实现版本。C#下的log4Net,Java下的log4j,C的log4c,C++的log4cxx,QT的log4QT。不过还是Log4j和Log4Net比较常用。这里针对Log4Net做介绍。
该日志系统官网: https://logging.apache.org/

Log4Net 简单的引用实例

第一步:在项目中添加对log4net.dll的引用
1.直接lib引用: https://logging.apache.org/log4net/download_log4net.cgi;
2.VS NuGet引入log4net(推荐)。

第二步:程序启动时读取log4net的配置文件。

a) CS程序,在根目录的Program.cs中的Main方法中添加:

log4net.Config.XmlConfigurator.Configure();

b) Web程序,在根目录的Global.asax.cs(没有新建一个)中的Application_Start方法中添加:

log4net.Config.XmlConfigurator.Configure();

c) 无论BS还是CS程序都可直接在项目的AssemblyInfo.cs文件里添加以下的语句:

[assembly: log4net.Config .XmlConfigurator()]

//自定义配置文件 ConfigFile :配置名;Watch:监听
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4net.config", Watch = true)])

d)无论BS还是CS程序都可直接在项目的配置文件 web.config/app.config 配置:

   <configSections><!--节点里添加:-->
           <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
    <configSections>
       
   <appSettings><!--节点里添加:-->
       <!--log4net配置文件-->
       <add key="log4net.Config" value="Log4net.config"/>
       <!--是否启用log4net监听-->
       <add key="log4net.Config.Watch" value="True"/> 
   </appSettings>

配置简要说明:

首先是声明配置

四个不同的log配置,可对应四个不同的log级别

  <appender-ref ref="InfoLog" />

  <appender-ref ref="WarnLog" />

  <appender-ref ref="ErrorLog" />

  <appender-ref ref="DebugLog" />

这里的ref的值对应下方<appender>节点的name,<appender>节点里面就是详细配置

appender主要注意配置的有:

1.路径:

<param name="File" value="Logs\\Info\\" />

2.log文件名:

 <param name="DatePattern" value="yyyyMMdd'_Info.log'" />

3.log内容 && 输出内容格式 :

内容
     <param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c [%L] %n%m %n" /> 
  
输出内容格式 
    %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
    %n(new line):换行
    %d(datetime):输出当前语句运行的时刻
    %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
    %t(thread id):当前语句所在的线程ID
    %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
    %c(class):当前日志对象的名称,例如:
    -模式字符串为:%-10c -%m%n
    -代码为:
        ILog log=LogManager.GetLogger(“Exam.Log”);
        log.Debug(“Hello”);
    -则输出为下面的形式:
        Exam.Log       - Hello
        %L:输出语句所在的行号
        %F:输出语句所在的文件名
        %-数字:表示该项的最小长度,如果不够,则用空格填充

4、 对应的级别: 区间(LevelRangeFilter)、单级别(晚点补):

  <filter type="log4net.Filter.LevelRangeFilter">

    <levelMin value="INFO" />

    <levelMax value="INFO" />

  </filter>

完整的配置文件代码如下:

<configuration>

  <configSections>

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

  </configSections>

  <log4net>

    <root>

      <level value="ALL"/>

      <!--根据log级别记录到不同的日志文件-->

      <appender-ref ref="InfoLog" />

      <appender-ref ref="WarnLog" />

      <appender-ref ref="ErrorLog" />

      <appender-ref ref="DebugLog" />

    </root>

    <!--Info日志配置-->

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

      <!--Info保存路径-->

      <param name="File" value="Logs\\Info\\" />

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

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

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

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

      <!--Info日志名-->

      <param name="DatePattern" value="yyyyMMdd'_Info.log'" />

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

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

        <!--Log内容-->

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

      </layout>

      <!--本文件记录日志 级别区间-->

      <filter type="log4net.Filter.LevelRangeFilter">

        <levelMin value="INFO" />

        <levelMax value="INFO" />

      </filter>

    </appender>

    <!--Warn日志配置-->

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

      <!--Warn保存路径-->

      <param name="File" value="Logs\\Warn\\" />

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

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

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

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

      <!--Warn日志名-->

      <param name="DatePattern" value="yyyyMMdd_Warn'.log'" />

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

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

        <!--Log内容-->

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

      </layout>

      <!--本文件记录日志 级别区间-->

      <filter type="log4net.Filter.LevelRangeFilter">

        <levelMin value="WARN" />

        <levelMax value="WARN" />

      </filter>

    </appender>

    <!--Error日志配置-->

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

      <!--Error保存路径-->

      <param name="File" value="Logs\\Error\\" />

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

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

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

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

      <!--Error日志名-->

      <param name="DatePattern" value="yyyyMMdd_Error'.log'" />

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

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

        <!--Log内容-->

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

      </layout>

      <!--本文件记录日志 级别区间-->

      <filter type="log4net.Filter.LevelRangeFilter">

        <levelMin value="ERROR" />

        <levelMax value="ERROR" />

      </filter>

    </appender>

    <!--Debug日志配置-->

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

      <!--Debug保存路径-->

      <param name="File" value="Logs\\Debug\\" />

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

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

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

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

      <!--Debug日志名-->

      <param name="DatePattern" value="yyyyMMdd'_Debug.log'" />

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

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

        <!--Log内容-->

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

      </layout>

      <!--本文件记录日志 级别区间-->

      <filter type="log4net.Filter.LevelRangeFilter">

        <levelMin value="DEBUG" />

        <levelMax value="DEBUG" />

      </filter>

    </appender>

  </log4net>

</configuration>

相关文章

  • 非常完善的Log4net详细说明

    1、概述 log4net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将...

  • C# 优秀的开源日志记录组件--Log4Net 随笔(待续...

    概述 一个功能著名的开源日志记录组件,各语言都有相应实现版本。C#下的log4Net,Java下的log4j,C的...

  • Log4Net 日志组件通用代码

    [toc] 概述 C# 领域最知名的日志组件非 Log4Net 莫属。一直以来都是现用现查手册,虽然浪费不了多少时...

  • 6.日志记录

    一、概述 日志记录默认采用log4net,服务端,客户端都可以做日志记录。 二、使用 2.1服务端日志记录,代码如...

  • 系统日志服务: LiangdunSdk LogService

    LogService LiangdunSdk LogService 提供了日志记录功能,使用的是log4net库来...

  • Log4J

    日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。日志...

  • log4j详细介绍

    log4j是什么 *Apache的开源项目log4j是一个功能强大的日志组件(框架),提供方便的日志记录。 日志的...

  • 如何快速搭建一个简易的ELK日志分析系统

    一、ELK简介  ELK就是一款非常优秀的、开源的、用于搭建实时日志分析平台的组件。ELK是Elasticsear...

  • 日志组件使用总结

    概述 由于Java日志功能发布较晚,开源社区的日志组件发展日趋成熟,导致应用系统中日志组件依赖比较混乱。 常见 l...

  • log4j2+springBoot

    首先介绍下常见的开源日志组件:log4j是apache实现的一个开源日志组件logback同样是由log4j的作者...

网友评论

      本文标题:C# 优秀的开源日志记录组件--Log4Net 随笔(待续...

      本文链接:https://www.haomeiwen.com/subject/gccwaqtx.html