zoukankan      html  css  js  c++  java
  • log4net笔记

    源码下载

    dll下载(1.2.13版本)

    1、LogFileAppender的使用经验

    使用VS2010新建TestForm工程,使用log4net的步骤如下:

    1、引用log4net.dll(最新的版本是1.2.13);

    2、新建的项目没有App.config文件,添加新建项“应用程序配置文件” App.config;

    3、在App.config中添加如下内容:

    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, 
                log4net-net-1.0"/>
      </configSections>
      <log4net>
        <root>
          <level value="ALL"/>
          <appender-ref ref="LogFileAppender"/>
        </root>
        <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
          <param name="File" value="log-file.txt"/>
          <param name="AppendToFile" value="true"/>
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt;%n - %m%n"/>
          </layout>
        </appender>
      </log4net>
    configSections和log4net标签

    4、在Properties的AssemblyInfo.cs文件末尾添加如下内容:

    [assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]
    assembly文件的配置

    5、添加一个button,所有代码如下:

    namespace TestForm
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                log4net.ILog log = log4net.LogManager.GetLogger("My1stLogger");
                log.Debug("hello");
            }
        }
    }
    使用方法

    6、运行后点击button,在Debug文件夹(TestForm.exe所在的文件夹)下,有log-file.txt文件,打开内容如下:

    2014-06-10 14:05:30,561 [9] DEBUG My1stLogger [(null)] <(null)>
     - hello
    2014-06-10 14:05:30,679 [9] DEBUG My1stLogger [(null)] <(null)>
     - hello
    2014-06-10 14:05:31,037 [9] DEBUG My1stLogger [(null)] <(null)>
     - hello
    2014-06-10 14:05:31,249 [9] DEBUG My1stLogger [(null)] <(null)>
     - hello
    日志内容

     7、格式符含义(转换模式(ConversionPattern)):

    %d:打印日志的时间,精确到毫秒【2014-06-10 14:38:11,112】

    %n:回车;

    %m:日志内容;

    %c:你在程序中使用【log4net.ILog log = log4net.LogManager.GetLogger("My1stLogger");】创建的日志的名字My1stLogger;

    %p:日志级别或者叫信息类型(Fatal--Debug--Info--......);

    %F:所在类或者叫所在文件名,比如【D:TestFormForm1.cs】

    %L:打印日志的语句所在文件中的行号。

    %-数字:表示该项的最小长度,如果不够用空格填充。

    ---------------------

    %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:输出语句所在的文件名

    %-数字:表示该项的最小长度,如果不够,则用空格填充

    例如,转换模式为%r [%t]%-5p %c - %m%n 的 PatternLayout 将生成类似于以下内容的输出:

    176 [main] INFO  org.foo.Bar - Located nearest gas station.

    ---------------------

    2、RollingFileAppender

    TestForm2演示程序的配置文件:

    注意:对于Header和Footer,程序每重新启动一次,会产生新的header和footer。

    <?xml version="1.0"?>
    <configuration>
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, 
                log4net-net-1.0"/>
      </configSections>
      <log4net>
        <!--使用Rolling方式记录日志按照日来记录日志-->
        <appender name="RunLog" type="log4net.Appender.RollingFileAppender">
          <!--文件名,可以相对路径,也可以绝对路径,这里只给定了文件夹-->
          <file value="log\runtime\"/>
          <!--最小锁定模型以允许多个进程可以写入同一个文件,解决文件独占问题-->
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
          <!--是否增加文件-->
          <appendToFile value="true"/>
          <!--日志追加类型,Date为按日期增加文件,Size为按大小-->
          <rollingStyle value="Date"/>
          <!--文件命名格式,非日期参数化要进行转义,如自定义文件后缀-->
          <datePattern value="yyyyMM\yyyy-MM-dd&quot;.log&quot;"/>
          <!--是否固定文件名-->
          <staticLogFileName value="false"/>
          <!--内容布局-->
          <layout type="log4net.Layout.PatternLayout">
            <!--头部-->
            <header value="----------------------header--------------------------
    "/>
            <!--结尾-->
            <footer value="----------------------footer--------------------------
    "/>
            <!--输出格式化-->
            <conversionPattern value="当前时间:%d [%p] %m %n"/>
          </layout>
          <!--过滤器-->
          <filter type="log4net.Filter.LevelRangeFilter">
            <!--只接受最小等级与最大等级之间的日志输出,这里只接受INFO级别的输出-->
            <param name="LevelMin" value="INFO"/>
            <param name="LevelMax" value="INFO"/>
          </filter>
        </appender>
    
        <appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
          <file value="log\error\"/>
          <appendToFile value="true"/>
          <rollingStyle value="Date"/>
          <datePattern value="yyyyMM\yyyy-MM-dd&quot;.log&quot;"/>
          <staticLogFileName value="false"/>
          <layout type="log4net.Layout.PatternLayout">
            <header value="----------------------header--------------------------
    "/>
            <footer value="----------------------footer--------------------------
    "/>
            <conversionPattern value="当前时间:%d 错误类型:[%p]  信息:%m  所在类:%F 所在行:%L %n"/>
          </layout>
          <filter type="log4net.Filter.LevelRangeFilter">
            <!--只接受最小等级与最大等级之间的日志输出,其他的被过滤,这里接受WARN(警告),ERROR(错误),FATAL(致命)级别的输出-->
            <param name="LevelMin" value="WARN"/>
            <param name="LevelMax" value="FATAL"/>
          </filter>
        </appender>
    
        <!--定义日志的输出媒介-->
        <root>
          <!--RollingFileAppender事件日志-->
          <appender-ref ref="RunLog"/>
          <appender-ref ref="ErrorLog"/>
        </root>
    
      </log4net>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
      </startup>
    </configuration>
    TestForm2的配置文件
  • 相关阅读:
    luogu P4779 【模板】单源最短路径(标准版)| dijkstra
    luogu P1160 队列安排 | 链式前向星
    luogu P1996 约瑟夫问题 | 链表
    luogu P3386 【模板】二分图匹配 | 匈牙利算法
    luogu P3366 【模板】最小生成树 | kruskal
    luogu P3378 【模板】堆
    luogu P3372 【模板】线段树 1
    luogu P1776 宝物筛选_NOI导刊2010提高(02) | 多重背包(二进制拆分)
    luogu P1616 疯狂的采药 | 完全背包
    luogu P1588 丢失的牛 | 宽搜
  • 原文地址:https://www.cnblogs.com/gmth/p/3779900.html
Copyright © 2011-2022 走看看