繁体   English   中英

log4j 1.x 中错误方法的区别

[英]Differences between error methods in log4j 1.x

在我工作的项目的日志记录部分,我尝试优化日志管理中显示的错误消息。 记录错误消息的编码如下:

String errorMessage =" Problem with server "+"\n"+t.getMessage();
_logger.fatal(errorMessage);

其中t为Throwable对象,_logger为Logger对象,与log4j框架相关。

我想知道的是,如果我使用_logger.fatal(errorMessage, t);会发生什么变化_logger.fatal(errorMessage, t); 而不是_logger.fatal(errorMessage); ? 如果它们之间存在重大差异,那么使用哪个更好?

编辑:我刚刚意识到我复制了“致命”示例而不是“错误”。 然而,我的问题对于致命的也是一样的。

实际上所有 Java 日志框架(唉,我们有很多这样的框架)都支持将Throwable作为最后一个参数。

这将导致记录堆栈跟踪,这对于诊断和修复问题非常有用。

如果异常的原因确实确定并且打印异常只是不必要的噪音,我只会永远不会向记录器提供异常。 例如这里:

try {
   int port = Integer.parseInt(input);
   // do something with the port
} catch (NumberFormatException e) {
   logger.error("'{}' is not a valid port number: {}", input, e.toString);
}

另一种情况是当异常被重新抛出时(其他东西最终会用更多的细节记录它)。

但不是“服务器问题”(并且在致命级别不少)。 看起来您想获得尽可能多的信息。

另请注意,在这些情况下, e.toString()通常比e.getMessage()更好,因为除了消息(可能为空)之外,它还包括异常的名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM