一、在asp.net中使用log4net 1、添加log4net.dll引用 2、编辑配置文件,有两种做法:放在web.config里或放在单独的文件里,我们一般放在单独的文件里,这样做的好处--修改log4net的配置不会影响到整个应用重启 3、在Global.asax的Application_Start里加入如下代码
4、创建日志对象,一般定义为一个类的私有静态字段
5、写日志
二、在分层构架中使用log4net 一般asp.net项目都会使用分层构架,如何在web以外的其它层使用log4net呢,比如DAL层,还要写相应的配置文件吗? 答案是否定的,在其它层中只要完成上面的1、4、5就行了,不需要再单独进行配置,它会自动沿用web层里的配置信息
三、如何防止自定义的logger和root重复写入日志 logger是从root继承而来,默认的用logger写的日志会被root重复写一份,如何防止这种情况呢,网上有人提出可以去掉root里的 appender-ref,这不是一个好的解决方法,logger只是为了单独处理一些日志,大部分的日志还是要依靠root来完成。 其实log4net提供了一种很好的解决方式,断开logger与root的继承关系,只要在配置文件里的logger加上属性additivity="false" 就可以了。
在log4net的配置中,appender是最重要的部分,一般来说,每一种appender都表示一种日志的输出介质,如日志文件、EvengLog、数据库、控制台、邮件、ASP.NET页面等。 本文对各种内置的appender的配置提供了示例,但却远称不上详尽。要想了解每一种appender的参数和选项的说明,请参看该appender的SDK文档。 以下示例都是.NET 2.0下进行的, log4net的版本为1.2.10。 详情参考 log4net.Appender. AdoNetAppender SDK文档 。 AdoNetAppender的相关配置内容取决于目标数据库的provider。下面仅提供SQL Server 2000的例子。 首先建立数据表:
<!-- <br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->CREATE TABLE [ dbo ] . [ Log ]
( [ Id ] [ int ] IDENTITY ( 1 , 1 ) NOT NULL , [ Date ] [ datetime ] NOT NULL , [ Thread ] [ varchar ] ( 255 ) NOT NULL , [ Level ] [ varchar ] ( 50 ) NOT NULL , [ Logger ] [ varchar ] ( 255 ) NOT NULL , [ Message ] [ varchar ] ( 4000 ) NOT NULL , [ Exception ] [ varchar ] ( 2000 ) NULL )
<!-- <br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->< appender name ="AdoNetAppender" type ="log4net.Appender.AdoNetAppender" >
< bufferSize value ="2" /> < connectionType value ="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=b77a5c561934e089" /> < connectionString value ="server=(local);database=TestBase;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 >
AspNetTraceAppender 详情参考 log4net.Appender.AspNetTraceAppender SDK 文档 。
<!-- <br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->< appender name ="AspNetTraceAppender" type ="log4net.Appender.AspNetTraceAppender" >
< layout type ="log4net.Layout.PatternLayout" > < conversionPattern value ="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </ layout > </ appender >
BufferingForwardingAppender 详情参考 log4net.Appender.BufferingForwardingAppender SDK 文档 。 <!-- <br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->< appender name ="BufferingForwardingAppender" type ="log4net.Appender.BufferingForwardingAppender" >
< bufferSize value ="5" /> < lossy value ="true" /> < evaluator type ="log4net.Core.LevelEvaluator" > < threshold value ="WARN" /> </ evaluator > < appender-ref ref ="LogFileAppender" /> < appender-ref ref ="AspNetTraceAppender" /> </ appender >
详情参考log4net.Appender.ColoredConsoleAppender SDK 文档 。 ColoredConsoleAppender将日志信息输出到控制台。默认情况下,日志信息被发送到控制台标准输出流。下面这个示例演示了如何高亮显示Error信息。 <!-- <br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->< appender name ="ColoredConsoleAppender" type ="log4net.Appender.ColoredConsoleAppender" >
< mapping > < level value ="ERROR" /> < foreColor value ="White" /> < backColor value ="Red, HighIntensity" /> </ mapping > < layout type ="log4net.Layout.PatternLayout" > < conversionPattern value ="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </ layout > </ appender >
<!-- <br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->< appender name ="ColoredConsoleAppender" type ="log4net.Appender.ColoredConsoleAppender" >
< mapping > < level value ="ERROR" /> < foreColor value ="White" /> < backColor value ="Red, HighIntensity" /> </ mapping > < mapping > < level value ="DEBUG" /> < backColor value ="Green" /> </ mapping > < layout type ="log4net.Layout.PatternLayout" > < conversionPattern value ="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </ layout > </ appender >
详情参考 log4net.Appender.ConsoleAppender SDK 文档 。 ConsoleAppender将日志信息输出到控制台标准输出流。 <!-- <br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->< 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.Appender.EventLogAppender SDK 文档 。 EventLogAppender将日志写入本地机器的应用程序事件日志中。默认情况下,该日志的源(Source)是AppDomain.FriendlyName,也可以手动指定其它名称。 <!-- <br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->< 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 > FileAppender 详情参考 log4net.Appender.File Appender SDK 文档 。 FileAppender将日志信息输出到指定的日志文件。 <!-- [if gte vml 1]> <![endif]--><!-- [if !vml]--> <!-- <br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->< appender name ="LogFileAppender" type ="log4net.Appender.FileAppender" >
< param name ="File" value ="WebUtilClient.log" /> < param name ="AppendToFile" value ="true" /> < layout type ="log4net.Layout.PatternLayout" > < param name ="ConversionPattern" value ="%d [%t] %-5p %c [%x] - %m%n" /> </ layout > </ appender >
ForwardingAppender 详情参考 log4net.Appender.ForwardingAppender SDK 文档 。 <!-- <br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->< appender name ="ForwardingAppender" type ="log4net.Appender.ForwardingAppender" >
< threshold value ="WARN" /> < appender-ref ref ="ConsoleAppender" /> </ appender >
MemoryAppender <!-- <br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->< appender name ="MemoryAppender" type ="log4net.Appender.MemoryAppender" >
< onlyFixPartialEventData value ="true" /> </ appender >
详情参考 log4net.Appender.NetSendAppender SDK 文档 。 NetSendAppender向特定用户的屏幕发送消息(未验证)。 <!-- <br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->< appender name ="NetSendAppender" type ="log4net.Appender.NetSendAppender" >
< threshold value ="ERROR" /> < server value ="Anders" /> < recipient value ="xym" /> < layout type ="log4net.Layout.PatternLayout" > < conversionPattern value ="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </ layout > </ appender >
下面这个例子描述了如何配置该Appender以向OutputDebugString API写入日志(未验证)。
<!-- <br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->< appender name ="OutputDebugStringAppender" type ="log4net.Appender.OutputDebugStringAppender" >
< layout type ="log4net.Layout.PatternLayout" > < conversionPattern value ="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </ layout > </ appender >
详情参考 log4net.Appender.RemotingAppender SDK 文档 。 <!-- [if gte vml 1]><![endif]--><!-- [if !vml]--> <!-- <br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->< appender name ="RemotingAppender" type ="log4net.Appender.RemotingAppender" >
< sink value ="tcp://localhost:8085/LoggingSink" /> < lossy value ="false" /> < bufferSize value ="95" /> < onlyFixPartialEventData value ="true" /> </ appender > RollingFileAppender 详情参考 log4net.Appender.RollingFileAppender SDK 文档 。 下面这个例子演示了如何配置RollingFileAppender以写入log.txt文件。写入的文件名总是为 log.txt(StaticLogFileName参数指定为true);根据文件大小(RollingStyle)来生成新的文件;最多保存有10个文件(MaxSizeRollBackups属性,而且一旦写满10个文件,就不再写入日志了),每个文件最大为10KB。这些文件名称为 log.txt.1, log.txt.2…等。 <!-- <br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->< appender name ="RollingFileAppender" type ="log4net.Appender.RollingFileAppender" >
< param name ="File" value ="log\Log.txt" /> < param name ="AppendToFile" value ="true" /> < param name ="MaxSizeRollBackups" value ="10" /> < param name ="MaximumFileSize" value ="5MB" /> < param name ="RollingStyle" value ="Size" /> < param name ="StaticLogFileName" value ="true" /> < layout type ="log4net.Layout.PatternLayout" > < param name ="ConversionPattern" value ="%d [%t] %-5p %c [%x] - %m%n" /> </ layout > </ appender >
SmtpAppender通过Smtp邮件服务器发送日志信息: <!-- <br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> < appender name ="SmtpAppender" type ="log4net.Appender.SmtpAppender" >
< authentication value ="Basic" /> < to value ="anderscui@tom.com" /> < from value ="anderscui@163.com" /> < username value ="anderscui" /> < password value ="password" /> < subject value ="test logging message" /> < smtpHost value ="smtp.163.com" /> < bufferSize value ="512" /> < lossy value ="true" /> |
|