2009-04-23 73 views
27

我刚开始使用Log4Net,并期待看到您发现哪些内容对您的日志记录体验有用。Log4net /日志记录 - 你发现什么有用?

你有没有发现什么类型的东西是用来登录;结果只是噪音;你什么时候使用不同的日志级别(DEBUG,INFO等);你有每个日志条目的标准格式;你有没有记录过的东西?

任何陷阱?关于登录一般的好文章?

更新:你在哪里登录?什么Appenders和为什么?

谢谢!

+0

这应该可能是社区wiki。 – DevinB 2009-04-23 16:57:06

回答

20

我立足我对罗伯特·科扎克的出色响应响应,尽管我不太用我的登录以同样的方式

我用五种类型的日志语句:

  • DEBUG
  • 信息
  • 警告
  • 错误
  • FATAL

DEBUG声明语句时,你还在写一个应用程序,它是有用的,当你需要的在您的执行流程是什么/一个完整的认识。您可以使用DEBUG语句来测量锁前的队列,或者检查登录用户的用户名,甚至可以检查某个SQL调用的参数。 DEBUG用于通常不需要知道的语句。

信息应该在任何时候使用,如果出现错误信息将非常有用,但并不表示出现任何问题。如果您使用太多的INFO语句,您的日志将变得臃肿且无用,所以要小心。 使用INFO来处理您在错误时需要的任何关键信息,并且不会在错误发生的地方附近。

使用警告级别,如果您已检测到可恢复的,但仍然意外(至少有点期望,因为你抓住了它)。它表明你的应用程序可能处于不可行的状态,但你相信你可以在当前的执行路径上恢复/继续。

错误警告是指每当您发现意外的异常时。如果你正在恢复/重试当前的方法,我建议使用WARN。如果您要取消/保存,请使用错误。即使你的程序可以继续,ERROR意味着你正在尝试做某件事并被拒绝,因此正在转向其他事情。

致命的是用于当你在某个级别上的某个级别上发现某物时,你基本上不知道发生了什么。这意味着你甚至没有试图继续执行,你只需要记录每一个可能的信息,然后尝试退出。 致命错误很少使用,因为通常如果您遇到错误,您有足够的信息来尝试并继续执行。但是,如果尝试并继续,可能发生损坏的情况下,请记录致命错误,然后逃跑。


至于你在哪里登录。我通常喜欢登录到我的应用程序服务器上的“共享”文件夹(小心权限以便它们不公开),以便日志非常易于访问,并且始终是我调试的第一步。 如果可能,请进行设置,以便通过电子邮件发送警告,错误或致命错误,以便发出“高级”警告。

干杯

2
  • 所有异常记录到日志中,在ERROR水平在调用堆栈可能的最高水平(通常在事件处理等)
  • 用户输入导致的问题被在WARN级别记录(因为它可能预示我们需要改善我们的UI,以更好地引导用户)
  • “重大”活动得到记录在INFO水平(即任何涉及计费客户的信用卡,查询到第三方API等),包括涉及到的数据(通常是XML序列化,删除任何敏感信息)
  • 非常详细的活动可能会在DEBUG水平

登录我们很少使用FATAL级记录。

我们通常以RollingLogFileAppender,INFO级别和SmtpAppenderERROR级别部署。

1

我用四种类型的日志语句:

  • DEBUG
  • 信息
  • 警告
  • ERROR

我用DEBUG的发言我想在调试会话期间检查。通常这些不会持续到发布版本。这是我查看变量的值或记录方法的入口和出口的位置。

我使用信息的连接字符串,配置和信息的一般比特我总是想在日志中看到的。

警告很少使用的东西,我不知道有关的或潜在的错误情况,或者甚至在我知道会得到处理了堆栈异常检查。

我通常只使用错误的catch块上异常和在没有其他方法处理的异常时调用的报告的ExceptionHandler。

2

log4net的有Apache Chainsaw。 Chainsaw是一个用于实时查看日志消息的仪表板。它可以处理多个应用程序,执行即时过滤以及其他一些便利功能。

如果有疑问,请将其记录下来(最好在DEBUG或INFO等较高级别或创建自己的级别)。您可以配置在配置文件中获取输出的内容。

0

我发现,我通过设立项目在开发开始使用Log4PostSharp得到有价值的数据。基本上,结合PostSharp引擎,您可以在方法上放置一个属性,并且它将记录所有具有参数和返回值的调用。我在Assembly.cs文件的Debug级别设置它,以便它默认记录所有非属性获取器或设置器的方法调用。

如果不受控制,它可能会产生大量数据(我确保我不会在调试级别记录其他任何内容,以便在性能达到时可以轻松地打开和关闭并从发布版本完全删除它一个问题),但用一个好的日志查看器 - 我使用BareTail - 你可以很快找出复杂的错误。特别擅长确定所有不同线程出现问题的方法。

我使用滚动文件appender,以便最新的数据总是可用,没有文件变得荒谬的大小。

2

另外还有另一个ASP.NET的日志记录框架ELMAH。虽然它不是一个真正的日志框架,但更多的是一个异常框架。

很酷的功能包括:

  • 0码/重新编译实现它
  • 有一个Web UI来查看错误
  • 错误RSS提要
  • 可以配置它倾倒错误SQL
0

还有另一个log4net日志查看器(除了Apache电锯),我的公司已经使用了一段时间,它的calle d“log4net仪表板”,由一家挪威公司(我认为)开发,名为FaktNet,它的网站是http://www.l4ndash.com

它提供了一个基于Web的仪表板,它非常直观,可以很好地浏览日志,可以与许多不同的appender(如滚动文件或SQL服务器appender)一起使用,但它不是免费的,因为Apache电锯是。他们确实有开发者许可证,这是免费的,并且只允许本地使用,这对于希望监控他的网站的自由职业者来说是足够的(一个单一的仪表板可以连接到多个日志源)。

FaktNet拥有各种许可证,具体取决于有多少用户应该能够访问仪表板,他们的企业许可证并不是非常昂贵(我认为这是600美元)。鉴于其能够访问多个日志,它可以成为一个开发团队的主要资产,该团队正在开发和监控许多大中型网站。

0

另一个真正有用的apender是DBAppender它可能会在一个数据库中记录信息,这显然非常有用,以便查询日志。

更多关于这个的信息在this article