java - 如何将 BufferedReader 写入 slf4j 记录器

标签 java slf4j

我有一个 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/

相关文章:

java - 如何在日志消息中打印标签?

java - slf4j.Marker 不兼容的类型

c# - (N)Hibernate 从 schema : Object <- AttributeValue -> Attribute 查找内容

java - 使用 GetDefaultSharedPreferences - 在 Activity 之间重置 SharedPref 值

Java Websocket 客户端未收到服务器的响应

java - 如何在按下/单击窗口标题栏时得到通知

java - Logback JaninoEventEvaluator 将日志事件定向到特定的附加程序

java - 重写方法中的泛型

java - 用于读取日志的 SLF4j API

java - 仅在级别为调试时打印堆栈跟踪