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的使用。

原文地址:https://www.cnblogs.com/millen/p/1676008.html