日志级别与stdErr/stdOut的关系



我在网上读了很多信息,但我想总结一下,但仍然不知道它是如何工作的。我想知道日志级别和java中的stdOut vs stdErr之间的关系?

这些日志呢?

logger.trace(..
logger.warn(..
logger.error(..

这些日志是怎么写的?

我完全没有看到java日志和stdOut/stdErr之间的关系。

谢谢。

任何连接都取决于您如何配置日志框架。

日志框架维护一个appender列表,这些appender 将输出发送到目的地。该目的地可以是标准输出、标准错误、文件、到某个远程服务器的TCP连接或许多其他位置。当您调用logger.debug()时,日志框架将查看其配置的追加程序列表,并将消息传递给任何接受调试级消息的追加程序。

你没有说你使用什么日志框架,但假设Log4J 2。你可能正在使用ConsoleAppender。这可以配置为将输出发送到StdErr或StdOut:

<Appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout pattern="%m%n"/>
</Console>
</Appenders>
<Appenders>
<Console name="CONSOLE" target="SYSTEM_ERR">
<PatternLayout pattern="%m%n"/>
</Console>
</Appenders>

简要说明:

日志记录器是高级日志框架的一部分。日志记录比标准输出流高级得多。

当一个进程启动时,操作系统给它一个标准输出和标准错误流,程序可以写入。标准输出用于信息,标准错误用于错误信息。

这是一个更低的级别,你可以使用System类访问这些流:

System.out.println(); // Write to stdout
System.err.println(); // Write to stderr

最新更新