log4net使用经验总结

本文分享了在使用log4net时的五条经验:1. 将配置文件移出web.config以简化管理和避免IIS重启;2. 创建公共类以根据功能模块生成不同的日志接口;3. 按照不同级别分类日志;4. 日志记录不仅限于错误情况;5. 使用反射获取日志记录器。这些技巧有助于提高日志管理效率和错误诊断能力。
下面介绍几条我认为比较好的经验,让我们更好的运用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对象。代码如下所示:
  1. log4net.ILog log = log4net.LogManager.GetLogger("logger-name");
通常来说,我们会以类(class)的类型(type)为参数来调用GetLogger(),以便跟踪我们正在进行日志记录的类。传递的类(class)的类型(type)可以用typeof(Classname)方法来获得,或者可以用如下的反射方法来获得:
  1. System.Reflection.MethodBase.GetCurrentMethod().DeclaringType
尽管符号长了一些,但是后者可以用于一些场合,比如获取调用方法的类(class)的类型(type)。

总结

上面是我在使用log4net中总结出的一些个人认为比较好的经验,总结出来,希望对大家有所帮助。如果觉得上面的经验不对,请大家指出来,如果有更好的经验大家也可以在下面留言告诉我。用来帮助更多的人。

转载于:https://www.cnblogs.com/vsdot/p/3263440.html

1、概述 log4net.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。本文主要是介绍如何在Visual Studio2008中使用log4net快速创建系统日志,如何扩展以输出自定义字段。 2、一个简单的使用实例 第一步:在项目中添加对log4net.dll的引用,这里引用版本是1.2.10.0。 第二步:程序启动时读取log4net的配置文件。 如果是CS程序,在根目录的Program.cs中的Main方法中添加: log4net.Config.XmlConfigurator.Configure(); 如果是BS程序,在根目录的Global.asax.cs(没有新建一个)中的Application_Start方法中添加: log4net.Config.XmlConfigurator.Configure(); 无论BS还是CS程序都可直接在项目的AssemblyInfo.cs文件里添加以下的语句: [assembly: log4net.Config .XmlConfigurator()] 也可以使用自定义的配置文件,具体请参见4.4 关联配置文件。 第三步:修改配置文件。如果是CS程序,则在默认的App.config文件(没有新建一个)中添加内容;如果是BS程序,则添加到Web.config文件中,添加内容一样,这里不再列出。 App.config文件添加内容如下: <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net> <root> <level value="WARN" /> <appender-ref ref="LogFileAppender" /> <appender-ref ref="ConsoleAppender" /> </root> <logger name="testApp.Logging"> <level value="DEBUG"/> </logger> <appender name="LogFileAppender" type="log4net.Appender.FileAppender" > <param name="File" value="log-file.txt" /> <param name="AppendToFile" value="true" /> <layout type="log4net.Layout.PatternLayout"> <param name="Header" value="[Header] "/> <param name="Footer" value="[Footer] "/> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="DEBUG" /> <param name="LevelMax" value="WARN" /> </filter> </appender> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" > <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" /> </layout> </appender> </log4net> </configuration> 第四步:在程序使用log4net.ILog log = log4net.LogManager.GetLogger("testApp.Logging");//获取一个日志记录器 log.Info(DateTime.Now.ToString() + ": login success");//写入一条新log 这样就将信息同时输出到控制台和写入到文件名为“log-file.txt”的文件中,其中“log-file.txt”文件的路径是当前程序运行所在目录;也可以定义为绝对路径,配置如: <param name="File" value="C:/log-file.txt" />就写入C盘根目录下log-file.txt文件中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值