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

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

    ConsoleAppender

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

    	<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>
    

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

            [Test]
            public void TestLogErro()
            {
                _logM.Erro(new SysLogMessage{
                    Message="测试",
                    UserName="Henllyee",
                    Category="Debug",
                    URL="http://henllyee.cnblogs.com"
                });
                
            }
    

    我们来看看效果:

    image

    EventLogAppender

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

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

    看看效果:

    image

    FileAppender

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

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

    效果:

    image

    RollingFileAppender

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

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

    各个参数详细说明下:

    1)File:文件开头名称;

    2)AppendToFile:是否追加;

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

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

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

    6)RollingStyle:变换的形式;

    7)DatePattern:日期的格式

    我们看下运行的效果:

    image

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

    AdoNetAppender

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

    	<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
    		<!--BufferSize为缓冲区大小-->
    		<param name="BufferSize" value="1" />
    		<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    		<connectionString value="database=HJRightPlat;server=(local);User ID=sa;Password=123456;" />
    		<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)" />
    		<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="HJRight.ProjectBase.Utils.Log.Extentions.HJRightLayout,HJRight.ProjectBase.Utils">
    				<conversionPattern value="%SysMessage" />
    			</layout>
    		</parameter>
    		<parameter>
    			<parameterName value="@exception" />
    			<dbType value="String" />
    			<size value="2000" />
    			<layout type="log4net.Layout.ExceptionLayout" />
    		</parameter>
    		<parameter>
    			<parameterName value="@User" />
    			<dbType value="String" />
    			<size value="50" />
    			<layout type="HJRight.ProjectBase.Utils.Log.Extentions.HJRightLayout,HJRight.ProjectBase.Utils">
    				<conversionPattern value="%UserName" />
    			</layout>
    		</parameter>
    		<parameter>
    			<parameterName value="@Category" />
    			<dbType value="String" />
    			<size value="50" />
    			<layout type="HJRight.ProjectBase.Utils.Log.Extentions.HJRightLayout,HJRight.ProjectBase.Utils">
    				<conversionPattern value="%Category" />
    			</layout>
    		</parameter>
    		<parameter>
    			<parameterName value="@URL" />
    			<dbType value="String" />
    			<size value="50" />
    			<layout type="HJRight.ProjectBase.Utils.Log.Extentions.HJRightLayout,HJRight.ProjectBase.Utils">
    				<conversionPattern value="%SysURL" />
    			</layout>
    		</parameter>
    		<parameter>
    			<parameterName value="@ClientIp" />
    			<dbType value="String" />
    			<size value="50" />
    			<layout type="HJRight.ProjectBase.Utils.Log.Extentions.HJRightLayout,HJRight.ProjectBase.Utils">
    				<conversionPattern value="%ClientIP" />
    			</layout>
    		</parameter>
    	</appender>

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

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

    2)connectionString :数据连接;

    3)commandText :执行的命令;

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

    看看运行的效果:

    image

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

    总结

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

    作者:Henllyee Cui
    出处: http://henllyee.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明。
  • 相关阅读:
    C# 使用 sid 连接 Oracle(无需安装 Oracle 客户端)
    命令模式(Command Pattern)
    仅仅使用Google就完成了人生第一次破解
    GeoServer跨域问题
    List与DataTable相互转换
    GeoServer2.14.1修改端口
    坐标转换C#(Gcj02、wgs84、bd09互转)
    nginx启动报错(1113: No mapping for the Unicode character exists in the target multi-byte code page)
    C# 操作 Mongodb
    DocumentFormat.OpenXml导出word合并(文件被另一个进程占用)
  • 原文地址:https://www.cnblogs.com/Henllyee/p/1674913.html
Copyright © 2011-2022 走看看