log4net配置文件中的注释导致log4net不工作了!(原创)
2006-08-03 23:58 BAsil 阅读(1597) 评论(1) 编辑 收藏 举报好久没有更新blog了,真是有点惭愧。最近项目比较忙,不巧的是今天又发现我的log4net无法正常工作了,通过网上的搜索和反复的测试,终于发现了问题,同时也学到了几个新的技巧,拿出来眩一眩。
还是说一下出的问题吧。
问题描述:log4net不记录任何的错误。
问题解决:由于在配置文件中
<layout type="log4net.Layout.PatternLayout">
<!--<header value="-----------Header------------- " />
<footer value="-----------Footer-------------" />
<conversionPattern value="%newline%date %-5level %logger - %message%newline" />-->
<conversionPattern value="<HR COLOR=red>%n异常时间:%d [%t] <BR>%n异常级别:%-5p <BR>%n异 常 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
存在<!-- -->注释,导致log4net不记录任何错误;另一方面可能由于log4net的监视机制:<!--<header value="-----------Header------------- " />
<footer value="-----------Footer-------------" />
<conversionPattern value="%newline%date %-5level %logger - %message%newline" />-->
<conversionPattern value="<HR COLOR=red>%n异常时间:%d [%t] <BR>%n异常级别:%-5p <BR>%n异 常 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
/*If Watch is specified and set to true then the framework will watch the configuration file and will reload the config each time the file is modified. 如果设置为true,会在每次文件被修改的时候重新载入
*/
[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension="log4net",Watch=true)]
*/
[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension="log4net",Watch=true)]
再来说一下我刚学到的技巧
1、Log4net的RollingFileAppender按照日期生成同一后缀名的文件
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="log\\Log-" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value="yyyy-MM-dd".htm"" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10000" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="<HR COLOR=red>%n异常时间:%d [%t] <BR>%n异常级别:%-5p <BR>%n异 常 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
</appender>
<file value="log\\Log-" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value="yyyy-MM-dd".htm"" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10000" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="<HR COLOR=red>%n异常时间:%d [%t] <BR>%n异常级别:%-5p <BR>%n异 常 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
</appender>
这样可以生成Log-yyyy-MM-dd.htm的文件,怎么样不错吧,在这里要感谢9527的晃悠人生的用log4net快速构建asp.net 异常日志
注:在阅读log4net帮助文档的时候发现了一段黑体标注的话,摘录下来
A simple call to LogManager.GetLogger will cause the attributes on the calling assembly to be read and processed. Therefore it is imperative to make a logging call as early as possible during the application start-up, and certainly before any external assemblies have been loaded and invoked.
我个人理解,在做asp.net程序的时候,就是在global.asax里面就声明:
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
不知道这样理解对不对。