【问题标题】:General debugging log practices一般调试日志实践
【发布时间】:2010-08-09 22:39:07
【问题描述】:

由于最近发生的事件,我正试图弄清楚我应该为一般代码使用多少调试日志。

我一直在做的是非常谨慎地使用调试日志,以防我想要一些额外的信息或你有什么。这对我来说是有道理的,因为您似乎不应该记录代码所做的每一件小事,因为这可能会让您收到大量信息,以至于更容易错过真正重要的事情(或因挖掘而发疯)通过和验证日志)。

另一方面,我举了一个例子:我刚开始在我的 java 项目中使用 logback/slf4j,为了测试我是否正确设置了 .xlm 文件,我在方法的末尾添加了一个调试日志语句初始化gui组件。通常我不会在那里放一个日志语句,因为如果你的 gui 组件在你运行程序时没有正确初始化,那是很明显的。然而,这一次我运行了程序,并且看到日志显示 gui 组件被初始化了两次,即使只显示了其中一组。一个相当大的错误,但如果没有这些调试语句,我可能不会捕捉到一些东西。

所以我的问题是:在调试日志方面是否有任何“最佳实践”?在信息日志、异常、错误等方面,我看到了许多最佳实践问题,但在调试日志方面还没有发现太多。

谢谢:)

【问题讨论】:

  • 阅读大型日志是必要的,需要习惯。随工作而来。 :)
  • @euohoria83 - 废话!是时候开始为自己做好心理准备了:P
  • 以下关于Logging best practices的帖子可能是相关的

标签: java debugging logging


【解决方案1】:

一些想法:

  1. 不要只记录发生的事情,还要注意记录可用的参数/方法参数等。很容易忽略这一点。
  2. 很容易通过配置禁用调试日志记录,而不是事后登录。
  3. 在真正成为问题之前不要担心日志记录开销。
  4. 您可以使用 AOP 框架(Spring / AspectJ 等)自动化一些日志记录(方法的进入/退出)

【讨论】:

  • 是的,我担心的不是开销/禁用特定日志,就像你说的那样,这很容易做到。更重要的是我用这些日志语句把我的代码弄乱了多少。例如,我是否应该在调用任何方法时记录,就在调用某些方法、构造函数等时?当我更改给定变量时(不会使程序崩溃),我应该记录它以确保它具有预期值吗?我认为您的第一点可以总结一下,但我只是想真正了解所有这些。
  • 每当调用任何方法时创建一个单独的日志级别怎么样?这样,您可以将所有日志记录语句放在适当的位置,但根据需要打开和关闭输出。但主要是在代码路径更改时记录是个好主意,例如在“if”语句中。
【解决方案2】:

我认为在决定记录什么/多少方面没有任何“最佳实践”。这是第 22 条规定的情况之一。如果您需要查看日志,那里“永远”没有足够的信息,但如果您不这样做,那么“所有”日志记录只是代码混乱和不必要的运行时开销。您需要单独判断每个应用程序的界限在哪里。

但要记住一点。如果您和您的客户能够破解代码以添加临时调试语句,那么您就不需要那么多的永久日志记录代码。但是,如果您没有选择破解(几乎)生产代码来调试事物,那么您需要一定级别的日志记录代码,以防万一......

【讨论】:

    猜你喜欢
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    相关资源
    最近更新 更多