如何知道何时有太多的日志记录消息?

2022-09-04 07:10:29

我遇到了一个非常好的库来解析CUE文件。但是当我开始阅读它的源代码时,我意识到它几乎不可读:

public void setParent(final CueSheet parent) {
    FileData.logger.entering(FileData.class.getCanonicalName(), "setParent(CueSheet)", parent);
    this.parent = parent;
    FileData.logger.exiting(FileData.class.getCanonicalName(), "setParent(CueSheet)");
}

每个方法都有 logger.entering() 和 logger.exiting() 消息。是不是太过分了?

还有另一个用于解析音频标签的java库。它还为它读取的每个文件提供了大约15条日志消息。这很烦人,所以我评论了每个对logger的电话。库的速度提高了一倍,因为他们对日志消息使用了大量的字符串串联。

所以问题是:我真的应该记录所有内容,即使它不是大型企业应用程序吗?因为这些库显然不需要任何日志记录,除了错误消息。我的经验表明,记录器是糟糕的调试工具。我为什么要使用它?


答案 1

如何知道什么时候是太多的日志记录?当您知道记录的信息在长期内并不重要时,例如用于简单的调试操作或错误更正,或者当应用程序不处理太多重要信息时。

有时您需要记录几乎所有内容。性能或分析的全部可能性是应用程序最重要的部分吗?这真的要视情况而定。

我过去曾与许多不同的Web服务进行过一些集成,例如同一应用程序中的10个。我们记录了所有 xml 请求和响应。这是开销吗?从长远来看,我不这么认为,因为我们使用了很多信用卡操作,并且应该记录服务器的每个过程。如何知道当有错误时发生了什么?

你不会相信我在一些xml响应中看到的。我甚至从一家大型飞机公司收到了一个没有关闭标签的xml。“过多日志”是一种不好的做法吗?当您必须证明错误来自其他供应商时,请向您的客户说出来。


答案 2

理想情况下,您使用允许日志记录级别的记录器;例如,log4j具有致命/错误/警告/调试/信息。这样,如果将级别设置为“仅显示错误”,则不会丢失不需要的软件构建日志消息的速度。

也就是说,它只是太多的日志记录,直到你最终需要一些本来会被记录的东西。不过,听起来大多数减慢您速度的日志记录应该是“跟踪”级别;它向您展示了探查器将具有的内容。


推荐