java - 何时在系统输出上使用 log4j

标签 java logging log4j

为什么使用 logger.debug() 而不是 System.out.println() 是一个好习惯?

我知道 log4j 允许您控制要打印的内容(DEBUGFATALINFO 等),但除此之外,是还有其他好处吗?

最佳答案

Logger 为您的日志记录增加了更多值(value)。

  • 日志级别:在生产环境中,您不关心某些级别(例如:调试信息),只关心严重错误和系统崩溃。
  • 日志过滤:过滤允许记录哪些组件。
  • 日志格式:控制日志中包含的信息及其格式。您可以设置默认值(如时间和线程 ID)或为每个语句添加更具体的值。
  • 日志目的地:您可以将记录器设置为写入文件、电子邮件、数据库等。
  • 保留和归档日志的策略:让记录者管理日志,保留一些历史记录,删除旧的

此外,记录器通常是同步的,因此您的打印语句不会相互覆盖。 You cannot guarantee that with System.out .

您可以使用 System.out 实现所有这些,但它会非常复杂和乏味。

关于java - 何时在系统输出上使用 log4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18639056/

相关文章:

java - 如何让 Logger 使用 LogManager.readConfigurations 中的配置?

java - log4j 和 websphere 6.1 配置

gradle - 如何在 Spring Boot Gradle : log4j-over-slf4j. jar、slf4j-log4j12.jar 中启用 Log4j 多重绑定(bind)

C3P0ConnectionProvider.getConnection() 中的 java.lang.NullPointerException

java - 连接4,检查赢家算法

kubernetes - DataDog 日志摄取不适用于 Kubernetes 集群

java - log4j ,,,cxf ,JSF (com.faces) 日志不会写入文件

java - Android Studio 渲染问题 - 缺少样式?

java - JUnit 中的测试数据

azure - 从 ACI 上的容器内运行的控制台应用程序记录应用程序数据的最佳方法