一、
想要让Log4net日志(以下称日志)按每月自动归类为一个文件夹,为此,学习和修改了log4net.config文件。查了资料,重点是以下这些参数:
<param name="File" value="Log/log.config" /> <param name="AppendToFile" value="true" /> <param name="RollingStyle" value="Date" /> <param name="DatePattern" value="_yyyy-MM-dd.'config'" /> <param name="StaticLogFileName" value="true" />
众说纷纭,许多说得让人看后似懂非懂,经过说起来都是泪的实验,终于有了明确的结论,整理发表出来避免后人走弯路。
1.StaticLogFileName的值如果为true,则当前日志文件(相对于历史日志文件而言)的文件名只取File参数。如果为false,则文件名取File+DatePattern。
2.File的值是静态的如果写“yyyy-MM”就是“yyyy-MM”而不会转成当前的年份和月份,而且斜扛“/”与反斜扛“\”效果相同,连续2扛也与1扛相同。
3.DatePattern的值是动态的“yyyy”代表4位年份,详细参考网上的众多资料(这个不难得到)。如果想表达静态的字符(如“y”)有2种办法,1是使用转义字符“\”,即“\y”,2是使用一对单引号限定,即“'y'”。如上面的value="_yyyy-MM-dd.'config'",就是因为fig有特殊含义,所以把“config”用单引号包含起来了。
4.修改了(网站上的)log4net.config文件,使它生效的方法是重启网站(我没有试着去操作应用程序池)。实测重启网站有约10%没有使它生效,但如果是先停止网站再启动,则100%生效。
以上4点最关键是第1点,也是众多资料所没有说清楚的(本人的汉字理解能力有问题?)。最终符合我要求的配置如下:
<param name="File" value="Log\" /> <param name="AppendToFile" value="true" /> <param name="RollingStyle" value="Date" /> <param name="DatePattern" value="yyyy-MM\\yyyy-MM-dd.'log'" /> <param name="StaticLogFileName" value="false" />
以上是基于我自己做的实验而得出的结论,难免不够系统和全面,限于本人水平,难免有错误。如有发现错漏,欢迎指正。
二、
log4net配置文件设置
2011-11-16 13:15:41| 分类: Notes|举报|字号 订阅
log4net的使用,主要在配置文件的设置上,明白了如何配置就基本能够封装自己要用的Log公共类了,以下是Log4net的一个配置示例及常用参数讲解。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <!--Log设定--> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0" /> </configSections> <log4net> <!--日志记录器logger,可以有多个--> <logger name="fileLog"> <level value="ALL" /> <appender-ref ref="RollingLogFileAppender" /> <appender-ref ref="ConsoleAppender" /> </logger> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" > <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="[%d][%-4p] %m%n"/> </layout> </appender> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender" > <!--log存放的路径--> <param name="File" value="log_" /> <param name="AppendToFile" value="true" /> <param name="StaticLogFileName" value="false"/> <param name="MaximumFileSize" value="10MB"/> <param name="Threshold" value="ALL"></param> <param name="DatePattern" value="yyyyMM"\\log_"yyyyMMdd".log""/> <param name="RollingStyle" value="Composite"/> <param name="CountDirection" value="1"/> <param name="AppendToFile" value="true"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="[%d][%-4p] %m%n" /> </layout> </appender> </log4net> </configuration> RollingLogFileAppender(文件记录)参数:< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />
参数名 | 描述 | ||||||||||||||||||||
filter | 可以有0或多个filter,具体配置在下面的Filter项说明。 | ||||||||||||||||||||
layout | 可以有0或者说1个layout,当没有layout时,没有输出。具体配置在下面的layout项说明 | ||||||||||||||||||||
param | Param有多个可以进行配置,常用的:
例如: <param name="File" value="UpLoads\\Log\\"/> <param name="MaximumFileSize" value="3000"/> <param name="StaticLogFileName" value="false"/> <param name="Threshold" value="Debug"></param> <param name="DatePattern" value="yyyyMM"\\#{ServerHostName}-"yyyyMMdd".log""/> <param name="RollingStyle" value="Date"/> |
三、 <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4Net" /> </configSections> <log4net> <!--配置日志的级别,低于此级别的就不写到日志里面去 OFF、FATAL、ERROR, WARN, INFO, DEBUG, ALL --> <root> <level value="DEBUG" /> <appender-ref ref="LogFileAppender" /> <appender-ref ref="ConsoleAppender" /> </root> <logger name="WebLogger"> <level value="ERROR" /> </logger> <!--输出到文件--> <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net"> <param name="File" value="Log/" /> <param name="AppendToFile" value="true" /> <!-- 切割最多文件数 -1表示不限制产生日志文件数--> <param name="MaxSizeRollBackups" value="-1"/> <!-- 每个文件的大小限制 --> <param name="MaximumFileSize" value="10MB"/> <!-- RollingStyle Composite 综合 Size 按大小 Date 按时间 --> <param name="RollingStyle" value="Composite" /> <param name="DatePattern" value=""Logs_"yyyyMMdd".txt"" /> <param name="StaticLogFileName" value="false" /> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="Header" value="
----------------------application startup--------------------------
" /> <param name="Footer" value="
 ----------------------application shutdown--------------------------
" /> <param name="ConversionPattern" value="%d [%t] %-5p %c - (%line) %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="ALL" /> <param name="LevelMax" value="OFF" /> </filter> </appender> <!--输出控制台--> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender,log4net"> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="ConversionPattern" value="%d [%t] %-5p %c - (%line) %m%n" /> </layout> </appender> </log4net> </configuration>