zoukankan      html  css  js  c++  java
  • Log4Net 使用简介

    前言

    本文主要介绍了log4net这个类库以及它在winform程序下的简单用法。


    什么是log4net

    Log4net是帮助程序输出日志内容到不同目标中的一个类库。Log4net类库其实是Log4j框架向.NET运行时转变的一个类库。我们保留log4j的核心框架,并在.NET运行时中增加了新的特性。目前最新版本1.2.10.0,更多信息请参见官方网站http://logging.apache.org/log4net/


    Log4net日志级别

    日志级别由低到高分为以下几种:


    1. DEBUG
    2. INFO
    3. WARN
    4. ERROR
    5. FATAL
    如果我设置了级别为警告级别(WARN),则DEBUGINFO级别的日志不会显示,只会显示本身和更高级别。


    Log4net配置文件

    它使用xml配置节点来使用,例如:

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

    <log4net>

    <appender name='LogFileAppender' type='log4net.Appender.RollingFileAppender' >

    <param name='File' value='d:\log\Applog.txt'/> //日志存放路径

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

    <param name='datePattern' value='yyyy_MM_dd.lo\g' />

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

    <param name='ImmediateFlush' value='true'/>//是否及时写入,这样可以提高速度

    <param name='MaxSizeRollBackups' value='-1'/>

    <param name='MaximumFileSize' value='5MB'/> //文件大小

    <param name='RollingStyle' value='size'/> //分类的类型

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

    <param name='ConversionPattern' value='[%date{HH:mm:ss,fff}][%5.5level][%method][%line]: %message %newline'/>

    </layout>

    </appender>

    <logger name='MyLog'>

    <level value='Error'/> //Log级别

    <appender-ref ref='LogFileAppender'/>

    </logger>

    </log4net>

    下面对对其中的layout节点下的参数做简要说明,如下表:

    表示式

    含义

    date

    发生日志事件的本地时间。 使用 DE>%utcdate 输出UTC时间。date后面还可以跟一个日期格式,用大括号括起来。DE>例如:%date{HH:mm:ss,fff}或者%date{dd MMM yyyy HH:mm:ss,fff}。如果date后面什么也不跟,将使用ISO8601 格式 。

    日期格式和.NetDateTime类的ToString方法中使用的格式是一样。

    另外log4net还有3个自己的格式Formatter。 它们是 "ABSOLUTE", "DATE""ISO8601"分别代表 AbsoluteTimeDateFormatter, DateTimeDateFormatterIso8601DateFormatter。例如: %date{ISO8601}%date{ABSOLUTE}

    它们的性能要好于ToString

     

    location

    引发日志事件的方法(包括命名空间和类名),以及所在的源文件和行号。

    警告:会影响性能。没有pdb文件的话,只有方法名,没有源文件名和行号。

     

    level

    日志事件等级

    line

    引发日志事件的行号

    警告:会影响性能。

     

    message

    由应用程序提供给日志事件的消息。

     

    newline

    换行符

     

    thread

    引发日志事件的线程,如果没有线程名就使用线程号。

     

    method

    发生日志请求的方法名(只有方法名而已)。

    警告:会影响性能。


    下面给出一个控制台代码的例子:

    using log4net;

    class
    Program
    {
    static void Main(string[] args)
    {
    string str = @"<?xml version='1.0' encoding='utf-8' ?>"
    + @"<log4net>"
    + @" <appender name='LogFileAppender' type='log4net.Appender.RollingFileAppender' >"
    + @" <param name='File' value='d:\统计\Applog.txt'/>"
    + @" <param name='AppendToFile' value='true'/>"
    + @" <param name='datePattern' value='yyyy_MM_dd.lo\g' />"
    + @" <param name='StaticLogFileName' value='false'/>"
    //是否及时写入,这样可以提高速度
    + @" <param name='ImmediateFlush' value='true'/>" //默认是true
    + @" <param name='MaxSizeRollBackups' value='-1'/>"
    + @" <param name='MaximumFileSize' value='5MB'/>" //文件大小
    + @" <param name='RollingStyle' value='size'/>" //分类的类型
    + @" <layout type='log4net.Layout.PatternLayout'>"
    + @" <param name='ConversionPattern' value='[%date{HH:mm:ss,fff}][%5.5level][%method][%line]: %message %newline'/>"
    + @" </layout>"
    + @" </appender>"
    + @" <logger name='MyLog'>"
    + @" <level value='Error'/>" //Log级别
    + @" <appender-ref ref='LogFileAppender'/>"
    + @" </logger>"
    + @"</log4net>";

    XmlDocument xmldoc = new XmlDocument();
    xmldoc.LoadXml(str);

    log4net.Config.XmlConfigurator.Configure(xmldoc.DocumentElement);

    log4net.ILog log = log4net.LogManager.GetLogger("MyLog");

    log.Debug("记录日志");
    log.Error("记录日志");//错误
    log.Warn("记录日志");//警告
    log.Info("记录日志");
    log.Fatal("记录日志");

    }
    }


    我们要注意它输出的样式是这样的:

    [%date{HH:mm:ss,fff}][%5.5level][%method][%line]: %message %newline
    并且日志的级别为ERROR所以只能显示ERROR和FATAL级别的日志信息。如下图:

  • 相关阅读:
    深度学习之TensorFlow(一)——基本使用
    64位win10+cuda8.0+vs2013+cuDNN V5下Caffe的编译安装教程并配置matlab2014a 接口
    Win10+vs2012+cuda8.0的安装与配置
    图像处理与matlab实例之图像平滑(一)
    Windows下pycharm使用theano的方法
    Python中的支持向量机SVM的使用(有实例)
    混淆矩阵在Matlab中PRtools模式识别工具箱的应用
    模式识别与机器学习—bagging与boosting
    微服务架构下分布式事务解决方案——阿里GTS
    谈谈分布式事务
  • 原文地址:https://www.cnblogs.com/Johnny_Z/p/2199185.html
Copyright © 2011-2022 走看看