Log4Net 日志管理

Log4Net日志管理

    A.Log4Net日志管理

    Log4Net的日志级别如下:

级别

允许的方法

Boolean属性

优先级别

OFF

Highest

FATAL

void Fatal(...);

bool IsFatalEnabled;

RROR

void Error(...);

bool IsErrorEnabled;

WARN

void Warn(...);

bool IsWarnEnabled;

INFO

void Info(...);

bool IsInfoEnabled;

DEBUG

void Debug(...);

bool IsDebugEnabled;

ALL

Lowest

        Log4Net的日志管理提供了多种输出介质如日志文件、数据库、控制台等,下面我们着重介绍以下几    种常用的介质及其使用方法:

    1、输出介质为日志文件

    a) 配置文件中的配置

   <configSections>

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

   </configSections>

   <log4net>

       <root>

        <!--这里设置了在系统中日志记录的级别,如果在系统中需要记录的级别小于                此处设置的级别则日志不作记录-->

            <level value="ALL" />

            <!--定义了日志输出的介质的类型,可定义多种输出介质-->

            <appender-ref ref="LogFileAppender" />

        </root>

        <!--输出至指定的日志文件-->

        <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >

            <!--该配置项参数指明了日志文件存放的地方-->

            <param name="File" value="d:\log\Client.log" />

            <!--该配置项参数指明是否在原文件中添加日志信息-->

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

            <!--该配置项参数指明输出信息的布局或格式-->

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

                <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />

            </layout>

        </appender>

    </log4net>

    b) 应用程序中的调用

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

    //写Error级别的日志信息

    log.Error("输出Error级别的日志信息")

    //写Info级别的日志信息

    log.Info("输出Info级别的日志信息");


    2、输出介质为数据库

    a) 配置文件中的配置

    <configSections>

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

     </configSections>

     <log4net>

        <root>

        <!--这里设置了在系统中日志记录的级别,如果在系统中需要记录的级别小于                此处设置的级别则日志不作记录-->

            <level value="ALL" />

            <!--定义了日志输出的介质的类型,可定义多种输出介质-->

            <appender-ref ref="AdoNetAppender" />

        </root>

        <!--输出至数据库(Sql Server)。。。测试数据库用Northwind-->

        <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">

            <!--设置缓存中能存放的日志信息个数-->

            <bufferSize value="2" />

            <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=.0, Culture=Neutral, PublicKeyToken=b

            <connectionString value="server=(local);database=Northwind;integrated security=false;persist security info=True;UID=sa;PWD=" />

            <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />

       <!--传入数据库的相对应字段的参数值-->

            <parameter>

                <!--传入的参数名-->

                <parameterName value="@log_date" />

                <!--传入参数的类型-->

                <dbType value="DateTime" />

                <!--传入参数的布局或格式-->

                <layout type="log4net.Layout.RawTimeStampLayout" />

            </parameter>

            <parameter>

                <parameterName value="@thread" />

                <dbType value="String" />

                <size value="255" />

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

                    <conversionPattern value="%thread" />

                </layout>

            </parameter>

            <parameter>

                <parameterName value="@log_level" />

                <dbType value="String" />

                <size value="50" />

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

                    <conversionPattern value="%level" />

                </layout>

            </parameter>

            <parameter>

                <parameterName value="@logger" />

                <dbType value="String" />

                <size value="255" />

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

                    <conversionPattern value="%logger" />

                </layout>

            </parameter>

            <parameter>

                <parameterName value="@message" />

                <dbType value="String" />

                <size value="4000" />

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

                    <conversionPattern value="%message" />

                </layout>

            </parameter>

            <parameter>

                <parameterName value="@exception" />

                <dbType value="String" />

                <size value="2000" />

                <layout type="log4net.Layout.ExceptionLayout" />

            </parameter>

        </appender>

    </log4net>


    b) 应用程序中的调用

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

    //写Error级别的日志信息

    log.Error("输出Error级别的日志信息")

    //写Info级别的日志信息

    log.Info("输出Info级别的日志信息");


    3、输出介质为控制台 

    a) 配置文件中的配置

    <configSections>

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

    </configSections>

        <log4net>

            <root>

            <!--这里设置了在系统中日志记录的级别,如果在系统中需要记录的级别小于                此处设置的级别则日志不作记录-->

                <level value="ALL" />

                <!--定义了日志输出的介质的类型,可定义多种输出介质-->

                <appender-ref ref="ConsoleAppender" />

           </root>

           <!--输出至控制台-->

           <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >

           <!--该配置项参数指明输出信息的布局或格式-->

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

                <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />

            </layout>

        </appender>

    </log4net>

    b) 应用程序中的调用

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

    //写Error级别的日志信息

    log.Error("输出Error级别的日志信息")

    //写Info级别的日志信息

    log.Info("输出Info级别的日志信息");

    4、输出介质为本地机器的应用程序事件日志

    a) 配置文件中的配置

    <configSections>

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

    </configSections>

    <log4net>

        <root>

        <!--这里设置了在系统中日志记录的级别,如果在系统中需要记录的级别小于                此处设置的级别则日志不作记录-->

            <level value="ALL" />

            <!--定义了日志输出的介质的类型,可定义多种输出介质-->

            <appender-ref ref="EventLogAppender" />

       </root>

       <!--输出至Event Log服务-->

       <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">

       <!--该配置项参数指明输出信息的布局或格式-->

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

                <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />

            </layout>

       </appender>

    </log4net>

    b) 应用程序中的调用

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

    //写Error级别的日志信息

    log.Error("输出Error级别的日志信息")

    //写Info级别的日志信息

    log.Info("输出Info级别的日志信息");           

    5、其他

    其他的输出介质这里就不再介绍了,如有需要可参照相关资料

    在使用Log4Net的日志的时候有几点需要注意:

  • 如果在配置文件中的<root>节点下的配置了多个输出介质即有多个

        <appender-ref ref="***" />,那么你所配置的多个输出介质的都将记入相应日志信息

  • 由于我们在应用系统的开发中,某些日志要求达到Error或其他级别时才被记录,介于这种要求,我们需要自己定义一个级别,如下(在配置文件的<root>下加入):

        <!--定义个别日志写入的级别-->

        <logger name="main">

            <level value="Error"></level>

        </logger>

    调用:

  //指定配置的Logger的名称

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

  //写Error级别的日志信息

   log.Error("输出Error级别的日志信息")

    //写Info级别的日志信息

    log.Info("输出Info级别的日志信息");


(本篇Blog的 Word下载)

转载于:https://www.cnblogs.com/shimeng3344518/archive/2007/04/19/719381.html

猜你喜欢

转载自blog.csdn.net/weixin_34357887/article/details/94682759
今日推荐