java - 我什么时候应该使用 error.printStrackTrace() 而不是 log4.j.error()

标签 java logging log4j

什么时候应该使用 Throwable.printStackTrace() 打印错误,而不是使用 log4j 方法 error(String, Throwable)

差异在哪里,共同点是什么?

//干杯

最佳答案

Throwable.printStackTrace()将堆栈跟踪打印到标准错误,而 log4j 方法会将其打印在您喜欢的位置。您可以通过log4j configuration file指定何时以及如何打印堆栈跟踪。 .

第二种方法是最好的方法,因为您始终可以决定将错误写入标准错误,同时也可以将其打印在滚动文件中。 您的缺点是您的项目中需要 log4j 依赖项,但也有一些解决方案可以在不声明此依赖项的情况下使用 log4j 并仅在运行时提供它。

编辑:常见用途是使用 log4j api 在代码中写入日志,并在部署应用程序的位置配置 log4j。 另一种方法是使用 java.util.logging 编写它们以避免任何直接依赖,您可以使用 slf4j用于从您和第 3 方代码捕获任何日志并将其传送到您喜欢的日志记录 API(即 log4j)的桥梁

关于java - 我什么时候应该使用 error.printStrackTrace() 而不是 log4.j.error(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10535854/

相关文章:

multithreading - 尝试重新定义 IO::Tee::PRINT 以确保线程安全

Node.js/winston - 我可以追加日志吗?

php - Python 和 PHP 的异步日志记录策略

java - 关闭 log4j.xml 中的调试或日志消息

spring - JUnit测试案例中的Log4j

java - JFrame 上的关闭/最小化按钮的自定义设计

java - @WebFilter 需要 ServletComponentScan

java - 在哪里保存 WAR 应用程序的日志文件?

java - 检索 SharedPreferences 在我的 SettingsActivity 中不起作用

java - 如何在java中使用softassertion拍摄快照