首次在C#程序中用log4net
众所周知log4net是一个很强大的日志管理库,我自己也用了下,这里作下记录:
首先新建一个项目Log4NetTest,然后将log4net.dll程序集添加引用至Log4NetTest。
然后在Log4NetTest项目中的Properties -> AssemblyInfo.cs文件中添加:[assembly:log4net.Config.XmlConfigurator(Watch = true)],如图:
这句代码也可以添加到名称空间前面,但是这种方式log4net就只局限于该名称空间内可用,其它名称空间要用也要写这句代码,故可以直接加在AssemblyInfo.cs中作用于整个项目。
然后在App.config中写相应的log4net所需的配置信息,写好后就可以在Main函数中用代码:
ILog log = LogManager.GetLogger(typeof (Program)); // typeof(Program)的作用貌似是与 引用当前程序集有关。 log.Error("ErrMsg", new Exception("Error异常。")); log.Fatal("FatalMsg", new Exception("Fatal异常。")); log.Info("InfoMsg", new Exception("Info信息。")); log.Debug("DebugMsg", new Exception("Debug信息。")); log.Warn("WarnMsg", new Exception("我怎么")); Console.WriteLine("Log It's Ok"); Console.ReadKey();
如果想将log4net的配置写在一个单独的.config文件中,如log4net.config,则需要
修改[assembly:log4net.Config.XmlConfigurator(Watch = true)]为:[assembly: log4net.Config.XmlConfigurator(ConfigFile =
"log4net.config"
, Watch =
true
)]。
且要将log4net.config文件设置为复制到输出目录。(推荐将log4net的配置写在单独的配置文件中)
log4net.config中的配置信息可为:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <log4net> <root> <level value="ALL" /> <appender-ref ref="InfoAppender" /> <appender-ref ref="WarnAppender" /> <appender-ref ref="ErrorAppender" /> <appender-ref ref="FatalAppender" /> <appender-ref ref="DebugAppender" /> </root> <!-- 输出模式定义 --> <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> <!--日志路径: 兼容相对路径和绝对路径,此语句等价于<File value="Logs\"/> --> <param name= "File" value= "Logs\"/> <!--是否是向文件中追加日志--> <param name= "AppendToFile" value= "true"/> <!--保留天数--> <param name= "MaxSizeRollBackups" value= "-1"/> <!--日志文件名是否固定不变的--> <param name= "StaticLogFileName" value= "false"/> <!--日志文件名格式为:2017-01-12_Info.log--> <param name= "DatePattern" value= "yyyy-MM-dd"_Info.log""/> <!--日志根据日期滚动--> <param name= "RollingStyle" value= "Date"/>
<!-- 每条记录的头和尾 -->
<header value="{*" />
<footer value="*}" /> <!-- 写入记录文件时的格式%p应该指模式如WARN,%m应该指Message值,%n应该是换行的意思。接着输出Exception --> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date{yyyy-MM-dd HH:mm:ss.fff} %-8p %m%n" /> </layout> <!-- 此模式输出的级别范围 --> <!-- FATAL > ERROR > WARN > INFO > DEBUG --> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="INFO" /> <levelMax value="INFO" /> </filter> </appender> <appender name="WarnAppender" type="log4net.Appender.RollingFileAppender"> <File value= "Logs\"/> <param name= "AppendToFile" value= "true"/> <param name= "MaxSizeRollBackups" value= "10"/> <!-- 能保存的文件最大值,假设某次输出后该文件如mm_warn.log的大小将会超过最大值3KB,则此次输出仍有效,但是下次输出则会将该文件重命名为mm_warn.log.1,且生成一个新的mm_warn.log文件以供记录输出内容。 --> <param name="MaximumFileSize" value="3KB" /> <param name= "StaticLogFileName" value= "false"/> <param name= "DatePattern" value= "yyyy-MM-dd"_Warn.log""/> <param name= "RollingStyle" value= "Composite"/> <!-- 写入记录文件时的格式 --> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date{yyyy-MM-dd HH:mm:ss.fff} %-8p %m%n" /> </layout> <!-- 此模式输出的级别范围 --> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="WARN" /> <levelMax value="WARN" /> </filter> </appender> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <param name= "File" value= "Logs\"/> <param name= "AppendToFile" value= "true"/> <param name= "MaxSizeRollBackups" value= "10"/> <!-- 能保存的文件最大值 --> <param name="MaximumFileSize" value="1MB" /> <param name= "StaticLogFileName" value= "false"/> <param name= "DatePattern" value= "yyyy-MM-dd"_Error.log""/> <param name= "RollingStyle" value= "Date"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date{yyyy-MM-dd HH:mm:ss.fff} %-8p %m%n" /> </layout> <!-- 此模式输出的级别范围 --> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="ERROR" /> <levelMax value="ERROR" /> </filter> </appender> <appender name="FatalAppender" type="log4net.Appender.RollingFileAppender"> <param name= "File" value= "Logs\"/> <param name= "AppendToFile" value= "true"/> <param name= "MaxSizeRollBackups" value= "10"/> <param name= "StaticLogFileName" value= "false"/> <param name= "DatePattern" value= "yyyy-MM-dd"_Fatal.log""/> <param name= "RollingStyle" value= "Date"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date{yyyy-MM-dd HH:mm:ss.fff} %-8p %m%n" /> </layout> <!-- 此模式输出的级别范围 --> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="FATAL" /> <levelMax value="FATAL" /> </filter> </appender> <appender name="DebugAppender" type="log4net.Appender.RollingFileAppender"> <param name= "File" value= "Logs\"/> <param name= "AppendToFile" value= "true"/> <param name= "MaxSizeRollBackups" value= "10"/> <param name= "StaticLogFileName" value= "false"/> <param name= "DatePattern" value= "yyyy-MM-dd"_Debug.log""/> <param name= "RollingStyle" value= "Date"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date{yyyy-MM-dd HH:mm:ss.fff} %-8p %m%n" /> </layout> <!-- 此模式输出的级别范围 --> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="DEBUG" /> <levelMax value="DEBUG" /> </filter> </appender> </log4net> </configuration>
posted on 2017-01-16 17:37 Silentdoer 阅读(273) 评论(0) 编辑 收藏 举报