1、 Log4NET的概念:
a) 级别:trace、debug、info、warn、error、fatal。常用debug(调试信息,程序员临时跟踪执行,在正式运行的项目中应该不显示);warn(警告);error(错误)。
b) 特殊的级别:all(全部显示);off(全部不显示);
c) appender:可以把日志输出到控制台、文件、数据库、ftp服务器,甚至可以把日志输出到邮件、短信等。不同的输出场景就是不同的appender,可以添加多个appender,可以设定不同的级别级别使用不同的appender
d) 什么是“滚动日志”?为什么要限制日志文件的大小和个数?
2、 具体用法:
a) Install-Package Log4NET
b) 在<configuration>的<configSections>节点下新增(要在头部):<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
c) 然后在<configuration>
根节点下新增:
<log4net> <!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL --> <!-- Set root logger level to ERROR and its appenders --> <!--哪些信息会被记录到日志中--> <root> <!--当前及大于都不被记录--> <level value="DEBUG" /> <!--日志记录到哪--> <appender-ref ref="RollingFileTracer" /> </root> <!-- Print only messages of level DEBUG or above in the packages --> <!--滚动日志RollingFileAppender--> <appender name="RollingFileTracer" type="log4net.Appender.RollingFileAppender,log4net"> <!--文件路径--> <param name="File" value="App_Data/Log/" /> <!--追加到文件吗--> <param name="AppendToFile" value="true" /> <!--根据什么滚动--> <param name="RollingStyle" value="Date" /> <!--最多多少个文件--> <param name="MaxSizeRollBackups" value="10" /> <!--单个文件大小--> <param name="MaximumFileSize" value="1MB" /> <!--生成日志文件名格式--> <param name="DatePattern" value=""Logs_"yyyyMMdd".txt"" /> <param name="StaticLogFileName" value="false" /> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> </layout> </appender> </log4net>
d) App_Data下(如果是控制台项目是生成到binDebug下)的文件无法被浏览者下载,不希望访问者下载的文件放到这里。
e) 在程序启动的时候:log4net.Config.XmlConfigurator.Configure();。容易忘,如果发现日志文件一直没有,先想是不是忘了写这句话。
f) 记录信息:ILog logger = LogManager.GetLogger(typeof(WebForm1)); logger.Debug("aaaaaaaaaaaaaa"); logger.Error("aaaaaaaaaaaaaa"); 注意不是LoggerManager、不是ILogger
g) 还可以记录异常对象,这样异常堆栈就会记录到日志中:logger.Error("aaaaaaaaaaaaaa",ex);
3、 性能优化: logger.DebugFormat(“hello {0} {}”,"hello")等。 用{n}占位符,而不是字符串拼接,这样如果配置中不输出这个级别的时候,就不会进行字符串拼接,提升性能。
非常全的Log4Net使用教程:http://blog.csdn.net/ydm19891101/article/details/50561638