log4net使用经验总结
下面介绍几条我认为比较好的经验,让我们更好的运用log4net
1.web程序时不把log4net的配置文件放在web.config中
原因:一个项目随着需求的变更,配置字节会特别多,不便查阅及维护。而且一但更改配置文件,就会引起IIS重启。(局数据中的web.config中的配置,如果经常变动也应该精简和移出)。 解决方案:我们可以利用以下方法来实现: (1) log4net.Config.XmlConfigurator.ConfigureAndWatch(string filePath) 它用来加载配置文件,这个配置文件可以放在任意地方,与WEB程序完成分离,更改此文件可以避免IIS的重启。其中filePath必须为绝对路径。 (2)、在程序集下的AssemblyInfo.cs中加入[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log.config", Watch = true)] 配置文件放在web框架的根目录下。
2.写一个调用log4net的公共类,根据不同的功能模块来生成不同的ILog接口
项目中程序都会分成很多不同的模块,如果所有的模块的日志都写在一个目录里面,那在查阅的时候会是一种麻烦,我们可能根据不同的模块甚至更详细的功能来设置日志文档的存储路径。例如:Collect/debug_log.txt,StandData/debug_log.txt等等。3.不同级别的信息放到不同的文件中
这个和2中的思想类似,只不过分类方法不同而已。4.log4net并不一定要在程序发生错误时才记录日志
你可以把程序的业务逻辑处理过程都记录下来。在不需要的时候是可以通过配置文件关闭的。(比如说我们局数据中的采集业务逻辑和任务调度非常繁杂,如果程序出错,在判断错误时往往会非常困难,你可以把执行过程都记录下来,这样当程序出错时你通过日志就知道在哪一步出问题了。记录这种日志时可以用级别最低的Info来记录,程序稳定后在配置文件中更改日志记录级别就可以避免在程序无错时也记录日志的负载了)5.用System.Reflection.MethodBase.GetCurrentMethod().DeclaringType作为参数用到log4net.LogManager.GetLogger("")
Log4net框架定义了一个叫做LogManager的类,用来管理所有的logger对象。它有一个GetLogger()静态方法,用我们提供的名字参数来检索已经存在的Logger对象。如果框架里不存在该Logger对象,它也会为我们创建一个Logger对象。代码如下所示:- log4net.ILog log = log4net.LogManager.GetLogger("logger-name");
- System.Reflection.MethodBase.GetCurrentMethod().DeclaringType