程序的记事本--log4net

    xiaoxiao2021-03-26  7

    你是否在遇到程序运行问题时经常百度?你是否在遇到运行错误时经常去询问别人?如果有那么是时候改变啦,对于一个Developer来说那是不专业的表现,专业的Developer都会首先查看程序的运行日志,先从日志下手,分析问题发生的原因,然后修复它。这里面最重要的就是日志,那么你也就会很好奇,这些日志是如何记录的呢,偷偷的告诉你通常使用的是日志管理框架。那么是不是也想在开发程序时开发出一个日志管理的模块呢,不用着急下面就来介绍下如何做日志管理。         就我所知现在日志管理框架有多种如 Enterprise、NLog、CLog、Log4net,其中Log4net功能强大适用于中大型的项目日志管理,NLog虽然功能较少但是它使用简单,而且支持智能感应,另外Enterprise更是强大的没的说,针对于大型系统开发,当然使用也比较困难。但是考虑到它们的使用资源及功能的强大,最后我们的项目确定了使用Log4net,所以接下来将会主要讨论Log4net的主要使用方法。

    一、Log4net组成及配置

            从Log4net的API文档中不难看出,其实Log4net的开发过程还是蛮简单的,并没有想象中的那么复杂,而且在使用时只需要添加相应的配置节信息然后调用存储方法即可实现日志的存储,具体的结构如下图

      1.1 组成详解

            上图显示了Log4net的主要由五个部分组成,分别为Logger,Appenders, Filters, Layouts 和Object Renders,其中最主要的Appender命名空间中封装了日志的存储方式,也就是说通过配置Appender能够将日志输出到执行的类型中;Layout其实是封装了数据显示的格式,通过配置Layout能够输出指定模板的数据信息,它还可以控制数据的输出类型(输出xml还是文本类型);Object Renders很重要,它能够控制数据的自定义输出,log4net将会按照用户定义的标准输出日志。

      1.2 配置方法

            在使用log4net时首先需要配置日志存储方式,然后在代码中调用LogManager类的静态方法GetLog保存对象的对象的信息。其中配置信息可以写到config文件内,也可以自定义一个xml文档,把具体的配置节信息写到xml文件即可。

    二、使用方法

           log4net有多重存储级别,按照日志信息的情况大致分为了5类,它们分别是Error错误日志、Fatal严重错误日志、Info一般信息日志、Debug调试信息日志和Warn警告信息日志,在日志管理时可以按照日志的级别来考虑存放的方式,对于严重日志往往是系统的重大问题,此时可以考虑存到服务器数据库中,其它的一些日志可以考虑存储到文件中,可以提高服务器性能。接下来将会介绍它的几种使用方法。

        2.1 日志输出到DataBase

            把日志输出到数据库中也是很多系统经常使用的日志存储方法,在小数据量的处理过程中将日志保存到数据库中是可行的,但是如果需要处理的日志数据量较大那么这种存储方法就会降低数据库的性能,所以在存储日志时慎重使用这种方式,建议涉及到系统重大问题时采用此种存储方式,这样会提升数据库的性能。具体配置如下:

    [html] view plain copy <appender name="AdoNetAppender_SqlServer" type="log4net.Appender.AdoNetAppender">    <bufferSize value="1"></bufferSize>    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />    <connectionString value="Data Source=.;Initial Catalog=Test;Integrated Security=True;Pooling=False" />    <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)" />    <parameter>      <parameterName value="@log_date" />      <dbType value="DateTime" />      <layout type="log4net.Layout.PatternLayout" value="
    转载请注明原文地址: https://ju.6miu.com/read-650274.html

    最新回复(0)