首页 > 解决方案 > 如何将 BufferedReader 写入 slf4j 记录器

问题描述

我有一个 BufferReader,我需要将其转储到 slf4j 记录器中。

BufferedReader stdError = new BufferedReader(new InputStreamReader(process.getErrorStream()));

我想将 stdError 转储到 slf4j 记录器中。有没有我可以用来实现这一目标的库?

标签: javaslf4j

解决方案


Loggers不是java.ioI/O 流,也不是为了装饰它们而设计的。
Loggers旨在在某些附加程序中写入特定记录。process.getErrorStream()因此,如果您需要记录process.getErrorStream()Logger.error(readLine).

真的很容易写:

Process p = ...;
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String readLine = null;
while ((readLine = reader.readLine())!=null){
    logger.error(readLine);
}

增量记录(逐行)很重要,因为如果您仅在最后使用单个大日志条目执行该任务,并且 JVM 在到达“大”日志条目处理之前崩溃,您将不会记录任何内容。


推荐阅读