我第一次在项目中使用 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 并找到了一个测试配方。所以我想知道使用 log4j 真正获得了什么样的优势。