我有一个 BufferReader,我需要将其转储到 slf4j 记录器中。
BufferedReader stdError = new BufferedReader(new InputStreamReader(process.getErrorStream()));
我想将 stdError 转储到 slf4j 记录器中。我可以使用一个库来实现此目的吗?
最佳答案
Logger
不是 java.io
I/O 流,也不是为了装饰它们而设计的。
Loggers
旨在在某些附加程序中写入特定记录。因此,如果您需要记录 process.getErrorStream()
返回的信息,更简洁的做法是将 process.getErrorStream()
的每个读取行委托(delegate)给 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 在到达“大”日志条目处理之前崩溃,那么您将不会记录任何内容。
关于java - 如何将 BufferedReader 写入 slf4j 记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57286521/