log4j vs. System.out.println - logger 的优势?
我第一次在项目中使用log4j。一位程序员告诉我,使用被认为是一种不好的风格,log4j是当今日志记录问题的标准。System.out.println
我们做了很多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我真正获得了什么样的优势。