当使用sl4j时,我通常会使用例如编写调试消息来编写调试消息。 log.debug("some message")
其中log
是Logger
个实例。但是,我有一个第三方API(无法修改)提供类似于:
public interface Example {
public void debugPrint();
public void debugPrint(Writer writer);
}
无参数方法写入System.out
而另一方写入自定义编写器。有没有办法获得我可以传递给Writer
的{{1}}实例,这相当于写入Example.debugPrint(Writer)
所写的任何appender?
答案 0 :(得分:1)
如果这是JDK Writer
,你可以添加(写)具体的子类,它将使用适当的Appender
我很抱歉,现在它看起来对我来说,它必须反过来 - 编写您的自定义Writer,您将传递给debugPrint
,使用已配置的Writer#write()
方法日志工厂,所以代码大纲将如下所示:
class Slf4jBackedWriter implements Writer {
private final static Logger log = LoggerFactory.getLogger(Slf4jBackedWriter.class);
@Override
public void write(char[] cbuf, int off, int len) throws IOException {
} // etc
}