zoukankan      html  css  js  c++  java
  • Log4Net笔记(二)Apender(转)

    转自:

    http://www.cnblogs.com/Henllyee/archive/2010/02/27/1674913.html

    在前面的一篇文章中对log4net进行了大体的介绍(已经距离很长时间了),说明了logger、appender等组件的作用。在本篇文章中将详细说明几个常用的appender的使用。

    ConsoleAppender

    我们可以直接看出来ConsoleAppender的作用就是将消息输出在控制台上:

    1.<appender name="ConsoleAppender"
    2.          type="log4net.Appender.ConsoleAppender" >
    3.    <layout type="log4net.Layout.PatternLayout">
    4.        <param name="ConversionPattern"
    5.           value="%d [%t] %-5p %c [%x] - %m%n"/>
    6.    </layout>
    7.</appender>

    我们来看看一段测试代码:

    01.[Test]
    02.public void TestLogErro()
    03.{
    04.    _logM.Erro(new SysLogMessage{
    05.        Message="测试",
    06.        UserName="Henllyee",
    07.        Category="Debug",
    08.        URL="http://henllyee.cnblogs.com"
    09.    });
    10.      
    11.}

    我们来看看效果:

    image

    EventLogAppender

    EventLogAppender的作用是将日志写入事件查看器中。我们来看下配置:

    1.<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
    2.    <layout type="log4net.Layout.PatternLayout">
    3.        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    4.    </layout>
    5.</appender>

    看看效果:

    image

    FileAppender

    FileAppender的输出源是只将消息输出的文件上。

    01.<appender name="LogAllToFile" type="log4net.Appender.FileAppender">
    02.    <file value="G:\学习资料\Log4Net\Log4NetDemo\Log4NetDemo\bin\Debug\DemoLog.log"/>
    03.    <appendToFile value="true"/>
    04.    <!--<layout type="log4net.Layout.PatternLayout">
    05.        <conversionPattern value="%d [%t] %-5l - %m%n%n"/>
    06.    </layout>-->
    07.    <layout type="HJRight.ProjectBase.Utils.Log.Extentions.HJRightLayout,HJRight.ProjectBase.Utils">
    08.        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %SysMessage%newline" />
    09.    </layout>
    10.</appender>

    效果:

    image

    RollingFileAppender

    RollingFileAppender是输出源也是输出到文件中,只是以自增长的方式。配置的xml代码:

    01.<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    02.    <param name="File" value="log/system_log_"/>
    03.    <param name="AppendToFile" value="true"/>
    04.    <param name="MaxSizeRollBackups" value="100"/>
    05.    <param name="MaximumFileSize" value="1KB"/>
    06.    <param name="StaticLogFileName" value="false"/>
    07.    <param name="DatePattern" value="yyyyMMdd&quot;.log&quot;"/>
    08.    <param name="RollingStyle" value="Date"/>
    09.    <layout type="HJRight.ProjectBase.Utils.Log.Extentions.HJRightLayout,HJRight.ProjectBase.Utils">
    10.        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %SysMessage%newline" />
    11.    </layout>
    12.</appender>

    各个参数详细说明下:

    1)File:文件开头名称;

    2)AppendToFile:是否追加;

    3)MaxSizeRollBackups:最大变换数量(-1表示不设置);

    4)MaximumFileSize:文件的最大大小;

    5)StaticLogFileName:日志文件名是否为静态;

    6)RollingStyle:变换的形式;

    7)DatePattern:日期的格式

    我们看下运行的效果:

    image

    在上面的配置中文件的大小设置并不起作用,因为RollingStype设置为了Date,当设置为Composite的时候才会起作用。

    AdoNetAppender

    数据库记录的Appender。看看配置的代码:

    01.<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
    02.    <!--BufferSize为缓冲区大小-->
    03.    <param name="BufferSize" value="1" />
    04.    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    05.    <connectionString value="database=HJRightPlat;server=(local);User ID=sa;Password=123456;" />
    06.    <commandText value="INSERT INTO Sys_Log ([Date],[Thread],[Log_Level],[Logger],[Message],[Exception],[User],[Category],[URL],[Client_IP]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception,@User,@Category,@URL,@ClientIp)" />
    07.    <parameter>
    08.        <parameterName value="@log_date" />
    09.        <dbType value="DateTime" />
    10.        <layout type="log4net.Layout.RawTimeStampLayout" />
    11.    </parameter>
    12.    <parameter>
    13.        <parameterName value="@thread" />
    14.        <dbType value="String" />
    15.        <size value="255" />
    16.        <layout type="log4net.Layout.PatternLayout">
    17.            <conversionPattern value="%thread" />
    18.        </layout>
    19.    </parameter>
    20.    <parameter>
    21.        <parameterName value="@log_level" />
    22.        <dbType value="String" />
    23.        <size value="50" />
    24.        <layout type="log4net.Layout.PatternLayout">
    25.            <conversionPattern value="%level" />
    26.        </layout>
    27.    </parameter>
    28.    <parameter>
    29.        <parameterName value="@logger" />
    30.        <dbType value="String" />
    31.        <size value="255" />
    32.        <layout type="log4net.Layout.PatternLayout">
    33.            <conversionPattern value="%logger" />
    34.        </layout>
    35.    </parameter>
    36.    <parameter>
    37.        <parameterName value="@message" />
    38.        <dbType value="String" />
    39.        <size value="4000" />
    40.        <layout type="HJRight.ProjectBase.Utils.Log.Extentions.HJRightLayout,HJRight.ProjectBase.Utils">
    41.            <conversionPattern value="%SysMessage" />
    42.        </layout>
    43.    </parameter>
    44.    <parameter>
    45.        <parameterName value="@exception" />
    46.        <dbType value="String" />
    47.        <size value="2000" />
    48.        <layout type="log4net.Layout.ExceptionLayout" />
    49.    </parameter>
    50.    <parameter>
    51.        <parameterName value="@User" />
    52.        <dbType value="String" />
    53.        <size value="50" />
    54.        <layout type="HJRight.ProjectBase.Utils.Log.Extentions.HJRightLayout,HJRight.ProjectBase.Utils">
    55.            <conversionPattern value="%UserName" />
    56.        </layout>
    57.    </parameter>
    58.    <parameter>
    59.        <parameterName value="@Category" />
    60.        <dbType value="String" />
    61.        <size value="50" />
    62.        <layout type="HJRight.ProjectBase.Utils.Log.Extentions.HJRightLayout,HJRight.ProjectBase.Utils">
    63.            <conversionPattern value="%Category" />
    64.        </layout>
    65.    </parameter>
    66.    <parameter>
    67.        <parameterName value="@URL" />
    68.        <dbType value="String" />
    69.        <size value="50" />
    70.        <layout type="HJRight.ProjectBase.Utils.Log.Extentions.HJRightLayout,HJRight.ProjectBase.Utils">
    71.            <conversionPattern value="%SysURL" />
    72.        </layout>
    73.    </parameter>
    74.    <parameter>
    75.        <parameterName value="@ClientIp" />
    76.        <dbType value="String" />
    77.        <size value="50" />
    78.        <layout type="HJRight.ProjectBase.Utils.Log.Extentions.HJRightLayout,HJRight.ProjectBase.Utils">
    79.            <conversionPattern value="%ClientIP" />
    80.        </layout>
    81.    </parameter>
    82.</appender>

    说说里面几个主要的属性:

    1)connectionType :数据连接类型,上面的是sql server;

    2)connectionString :数据连接;

    3)commandText :执行的命令;

    4)parameter:指定各个参数的值;

    看看运行的效果:

    image

    上面的配置中用到了部分扩展,在后面的文章中会进行说明。

    总结

    在这篇blog中详细说明了几种常用的Appender,还有其他许多Appender,如SmtpAppender、TraceAppender等等。在下篇blog中我会说下layout的使用。

  • 相关阅读:
    【LeetCode】141. Linked List Cycle
    linux配置java环境变量(详细)
    CUDA中的流与事件
    多语言协作与二进制交互【转】
    /usr/bin/ld: cannot find -lz
    机器学习经典书籍[转]
    Valgrind使用[转]
    Instructions函数对照表:02 xmmintrin.h与SSE指令集[转]
    Eclipse中10个最有用的快捷键组合
    C语言调试的几种方法
  • 原文地址:https://www.cnblogs.com/millen/p/1676008.html
Copyright © 2011-2022 走看看