zoukankan      html  css  js  c++  java
  • 日志插件 log4net 的使用

    文本格式说明

    可以记载的日志类别包括:FATAL(致命错误)、ERROR(一般错误)、WARN(警告)、INFO(一般信息)、DEBUG(调试信息)。

    文本参数说明

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

    以下为个人定义的模板

    %n==========
    %n【日志级别】%-5level
    %n【记录时间】%date
    %n【线程编号】[%thread]
    %n【执行时间】[%r]毫秒
    %n【出错文件】%F
    %n【出错行号】%L
    %n【出错的类】%logger 属性[%property{NDC}]
    %n【错误描述】%message
    %n【错误详情】%newline

    输出示例:

    ==========
    【日志级别】ERROR
    【记录时间】2012-11-08 15:49:37,625
    【线程编号】[10]
    【执行时间】[180]毫秒
    【出错文件】C:\Users\Administrator\Documents\Visual Studio 2010\Projects\ConsoleApplication5\ConsoleApplication5\Program.cs
    【出错行号】24
    【出错的类】ConsoleApplication5.Program 属性[(null)]
    【错误描述】错误
    【错误详情】
    System.DivideByZeroException: 尝试除以零。
       在 ConsoleApplication5.Program.Main(String[] args) 位置 C:\Users\Administrator\Documents\Visual Studio 2010\Projects\ConsoleApplication5\ConsoleApplication5\Program.cs:行号 20

    ==========
    【日志级别】ERROR
    【记录时间】2012-11-08 15:49:37,666
    【线程编号】[10]
    【执行时间】[221]毫秒
    【出错文件】C:\Users\Administrator\Documents\Visual Studio 2010\Projects\ConsoleApplication5\ConsoleApplication5\Program.cs
    【出错行号】28
    【出错的类】ConsoleApplication5.Program 属性[(null)]
    【错误描述】error
    【错误详情】
    System.Exception: 发生了一个异常

    使用说明:

    配置文件:

    节点: <configuration>中添加

      <log4net>
        <!--定义输出到文件中-->
        <appender name="SysAppender" type="log4net.Appender.RollingFileAppender">
          <!--日志的路径-->
          <file value="Logs/Log4Net/" />
          <!--是否覆盖,默认是追加true-->
          <appendToFile value="true"/>
          <rollingStyle value="Composite"/>
          <!--文件名称-->
          <DatePattern value="yyyy-MM-dd'.log'"></DatePattern>
          <!--设置无限备份=-1 ,最大备份数为1000-->
          <param name="MaxSizeRollBackups" value="1000"/>
          <!--每个文件的大小-->
          <param name="MaximumFileSize" value="500KB"/>
          <!--名称是否可以更改为false为可以更改-->
          <param name="StaticLogFileName" value="false"/>
          <layout type="log4net.Layout.PatternLayout">
            <!--输出格式-->
            <conversionPattern value="%n==========
    %n【日志级别】%-5level
    %n【记录时间】%date
    %n【线程编号】[%thread]
    %n【执行时间】[%r]毫秒
    %n【出错文件】%F
    %n【出错行号】%L
    %n【出错的类】%logger 属性[%property{NDC}]
    %n【错误描述】%message
    %n【错误详情】%newline"/>
          </layout>
        </appender>
        <!--定义输出到控制台命令行中-->
        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%n==========
    %n【日志级别】%-5level
    %n【记录时间】%date
    %n【线程编号】[%thread]
    %n【执行时间】[%r]毫秒
    %n【出错文件】%F
    %n【出错行号】%L
    %n【出错的类】%logger 属性[%property{NDC}]
    %n【错误描述】%message
    %n【错误详情】%newline"/>
          </layout>
        </appender>
        <!--定义输出到windows事件中-->
        <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%n==========
    %n【日志级别】%-5level
    %n【记录时间】%date
    %n【线程编号】[%thread]
    %n【执行时间】[%r]毫秒
    %n【出错文件】%F
    %n【出错行号】%L
    %n【出错的类】%logger 属性[%property{NDC}]
    %n【错误描述】%message
    %n【错误详情】%newline"/>
          </layout>
        </appender>
        <!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。-->
        <root>
          <!--文件形式记录日志-->>
          <appender-ref ref="SysAppender"/>
          <!--控制台控制显示日志-->
          <appender-ref ref="ConsoleAppender"/>
          <!--Windows事件日志-->
          <!--<appender-ref ref="EventLogAppender"/>-->
          <!-- 如果不启用相应的日志记录,可以通过这种方式注释掉
          <appender-ref ref="AdoNetAppender_Access" />
          -->
        </root>
    
      </log4net>

    代码中:

    引用

    using log4net;
    using System.Reflection

    在命名空间中添加[红色的内容]

    [assembly: log4net.Config.XmlConfigurator(Watch = true)]
    namespace ConsoleApplication5

    调用示例:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using log4net;
    using System.Reflection;
    
    [assembly: log4net.Config.XmlConfigurator(Watch = true)]
    namespace ConsoleApplication5
    {
        class Program
        {
            static void Main(string[] args)
            {
                //创建日志记录组件实例
                ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
                //记录严重错误
                log.Fatal("严重错误");
                log.Fatal("严重错误", new Exception("发生了一个致命错误"));
                //记录错误日志
                log.Error("错误");
                log.Error("错误", new Exception("发生了一个异常"));
                //记录警告信息
                log.Warn("警告");
                log.Error("警告", new Exception("有一个警告信息"));
                //记录一般信息
                log.Info("一般信息");
                log.Error("一般信息", new Exception("发出一个一般信息"));
                //记录调试信息
                log.Debug("调试信息");
                log.Error("调试信息", new Exception("发生了一个调试信息"));
                Console.Read();
            }
        }
    }

    示例程序下载: 日志记录插件_log4net.zip

  • 相关阅读:
    【Unity学习笔记】Unity网络游戏开发实战(一)---网络编程的开端:Echo程序
    【DX11学习笔记】GerstnerWave波浪模拟(基于GPU计算着色器的实现)
    【DX11学习笔记】粒子系统--爆炸特效
    【设计模式】(二)观察者模式是什么?
    【设计模式】(一)工厂模式是什么?
    【C++笔记】C++中常见智能指针auto_ptr、unique_ptr、shared_ptr和weak_ptr的用法
    【C++笔记】C++关联容器set和map的概述和操作
    【C++笔记】C++函数模版与类模版
    【C++笔记】C++中vector、stack、deque、list的简易实际使用方法
    python之赋值、浅拷贝、深拷贝
  • 原文地址:https://www.cnblogs.com/henw/p/2760780.html
Copyright © 2011-2022 走看看