转自:
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.}我们来看看效果:
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>看看效果:
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>效果:
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".log""/> 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:日期的格式
我们看下运行的效果:
在上面的配置中文件的大小设置并不起作用,因为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:指定各个参数的值;
看看运行的效果:
上面的配置中用到了部分扩展,在后面的文章中会进行说明。
总结
在这篇blog中详细说明了几种常用的Appender,还有其他许多Appender,如SmtpAppender、TraceAppender等等。在下篇blog中我会说下layout的使用。