Den*_*hel 11 java eclipse logging stderr java.util.logging
我有一个简单的设置来记录消息:JDK 8 Update 65和Eclipse Mars
import java.util.logging.Logger;
public class Example {
private final static Logger LOGGER = Logger.getLogger(Example.class.getName());
public static void main(String[] args) {
LOGGER.info("Test");
}
}
Run Code Online (Sandbox Code Playgroud)
我希望得到一个输出stdout,就像使用一样System.out.println();.
但它会打印出来stderr,这会在eclipse控制台上产生一个红色字体:
我知道我可以通过编写自定义来改变这种行为Handler,但我想知道为什么默认输出会出现在?stderr而不是stdout?
记录器应该stdout用于fine+ info并stderr用于severe级别.
该java.util.logging中的API是下开发日志API规范:JSR 47。根据“Proposed Final Draft”中的更改日志,ConsoleHandler 始终使用 System.err。JCP 页面还列出了 API 的原始作者,我认为只有这些名字才真正知道您的问题的答案。
也就是说,我认为起源来自System.err API 文档。
通常,此流对应于主机环境或用户指定的显示输出或另一个输出目的地。按照惯例,此输出流用于显示错误消息或其他信息,即使主要输出流(变量 out 的值)已重定向到文件或其他目标通常不会持续监控。
反对System.out:
“标准”输出流。此流已打开并准备好接受输出数据。通常,此流对应于主机环境或用户指定的显示输出或另一个输出目的地。
记录映射到诊断而不是原始数据。将数据与诊断错误信息分开是很重要的,尤其是当管道过程在一起时,因为下游消费者只准备接受数据信息而不是错误消息。请参阅对标准输入、标准输出和标准错误感到困惑?了解更多详细信息。
小智 2
默认情况下,记录器将INFO及以上级别(即INFO、WARNING和SEVERE)的日志记录输出到标准错误流(System.err)。
资料来源:www3.ntu.edu.sg/home/ehchua/programming/java/JavaLogging.html
| 归档时间: |
|
| 查看次数: |
5167 次 |
| 最近记录: |