好久没有更新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);
不知道这样理解对不对。