【发布时间】:2017-10-13 04:34:58
【问题描述】:
我在 slf4j 后面使用 logback,想知道如何从 org.slf4j.Logger 实例获取 OutputStream 引用。用例是 Shrinkwrap 的 Archive.writeTo(OutputStream, ...) 方法。
我知道可以通过创建ByteArrayOutputStream、传递它并将其内容写入记录器来解决此引用的需要。我知道stdout and stderr can be redirected to a logger in general。话虽如此,我正在寻找这个问题的直接答案。如果没有,我会建议在 slf4j 中添加一个机制。
我正在使用 slf4j API 1.7.5 和 logback 1.2.2。
【问题讨论】:
-
我认为添加一个接受大量二进制数据而没有日志级别和明确消息分界的 API 是没有意义的。作为一个想要记录消息的应用程序,由您来生成有意义的、单独的日志消息(每个都有一个级别、一个“正常大小”的消息,可能还有一些映射的上下文属性)。 OutputStream 只是二进制数据的哑接收器。
-
jira.qos.ch/browse/LBCLASSIC-118 建议提供 OutputStream 引用作为
Logger.[level]的参数 -
不过,这需要按照您的建议工作:您将从记录器中获得一个 OutputStream。如果您将 OutputStream 传递给记录器,它所能做的就是写入它。无法从 OutputStream 中读取。