【发布时间】:2011-02-13 05:24:18
【问题描述】:
我第一次在项目中使用 log4j。一位程序员同事告诉我,使用 System.out.println 被认为是一种不好的风格,而 log4j 就像现在记录事务的标准一样。
我们进行了大量的 JUnit 测试 - System.out 的东西被证明更难测试。
因此我开始将 log4j 用于控制台控制器类,它只是处理命令行参数。
// log4j logger config
org.apache.log4j.BasicConfigurator.configure();
Logger logger = LoggerFactory.getLogger(Console.class);
Category cat = Category.getRoot();
似乎有效:
logger.debug("String");
生产:
1 [main] DEBUG project.prototype.controller.Console - String
我有两个关于此的问题:
- 根据我对使用此记录器的基本理解,如果在记录器上启用了调试模式,我应该可以轻松地选择编写带有时间戳的日志文件 - 而不是向控制台发送垃圾邮件?
- 为什么 System.out.println 更难测试?我搜索了stackoverflow并找到了testing recipe。所以我想知道使用 log4j 真正获得了什么样的优势。
【问题讨论】:
-
记录器被严重高估了。
System.out和System.err为您提供 80% 的功能和 20% 的日志框架。 -
i.redd.it/wz7z31me2h581.jpg 2021 年:“老板感谢我编写了一个安全的应用程序(我已将 log4j 替换为 System.out.println)”
标签: java logging junit timestamp logfiles