【问题标题】:How to redirect System.out to Play Logger? [duplicate]如何将 System.out 重定向到 Play Logger? [复制]
【发布时间】:2019-04-17 01:05:30
【问题描述】:
所以我在我的项目中使用了一个库,它使用 System.out 进行日志记录,我希望我的所有日志记录都在播放记录器中标准化 (play.Logger)。所以,我想知道是否有办法在debug 级别将 System.out 重定向到 Play Logger?
也许通过更改 System.out 以使用不同的流?
注意事项:
我的 Play 记录器配置为使用以下附加程序:
ch.qos.logback.core.ConsoleAppender
ch.qos.logback.core.FileAppender
我认为图书馆只调用System.out.println(String)
【问题讨论】:
标签:
java
scala
logging
playframework
logback
【解决方案1】:
使用以下sn-p:
System.setOut(new PrintStream(new OutputStream() {
StringBuilder sb = new StringBuilder();
@Override
public void write(int b) throws IOException {
if (b == '\n') {
writeStringToActualLogger(sb.toString());
sb = new StringBuilder();
} else {
sb.append((char) b);
}
}
}));
请记住,它仅适用于 ASCII。
您必须实现writeStringToActualLogger 才能将字符串写入您的记录器。