如何将System.out重定向到Play Logger?

时间:2018-11-14 05:46:15

标签: java scala logging playframework logback

因此,我在我的项目中使用一个库,该库使用System.out进行日志记录,并且我希望所有记录都在播放记录器(play.Logger)中进行标准化。因此,我想知道是否有一种方法可以将System.out重定向到debug级别的Play Logger。 也许通过将System.out更改为使用其他流?

注意:

我的Play记录器配置为使用以下附加程序:

ch.qos.logback.core.ConsoleAppender
ch.qos.logback.core.FileAppender

我认为图书馆只叫System.out.println(String)

1 个答案:

答案 0 :(得分:0)

使用以下代码段:

    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才能将字符串写入记录器。