微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

logback:日志消息与来自子进程的消息内联

如何解决logback:日志消息与来自子进程的消息内联

我正在尝试在控制台上打印 Nifi 注册表的所有日志,这是一个 springboot 应用程序。它有一个引导应用程序,它通过 java.lang.ProcessBuilder 加载主应用程序。下面是 bootstrap 应用程序的代码片段,它为其主应用程序记录日志:

final Future<?> stdOutFuture = loggingExecutor.submit(new Runnable() {
        @Override
        public void run() {
            final Logger stdOutLogger = LoggerFactory.getLogger("org.apache.nifi.registry.StdOut");
            final InputStream in = process.getInputStream();
            try (final BufferedReader reader = new BufferedReader(new InputStreamReader(in))) {
                String line;
                while ((line = reader.readLine()) != null) {
                    stdOutLogger.info(line);
                }
            } catch (IOException e) {
                defaultLogger.error("Failed to read from NiFi Registry's Standard Out stream",e);
            }
        }
    });

以下是我用来将日志消息从引导程序和主应用程序打印到控制台的相关 logback 配置。

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <pattern>%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX,UTC} [%thread] %-5level %logger{36}.%M:%L - %msg%n%rEx</pattern>
    </encoder>
</appender>

<logger name="org.apache.nifi.registry.StdOut" level="INFO" additivity="false">
    <appender-ref ref="CONSOLE" />
</logger>

<root level="INFO">
    <appender-ref ref="CONSOLE" />
</root>

但这是打印日志消息如下:

2021-02-23T06:53:22.038Z [NiFi logging handler] INFO  org.apache.nifi.registry.StdOut.run:1128 - 2021-02-23T06:53:22.038Z [main] INFO  o.a.nifi.registry.BootstrapListener.sendCommand:120 - Successfully initiated communication with Bootstrap

这只是控制台上的一条日志消息。注意主应用程序的日志消息是如何与引导程序的日志消息内联的?我应该在 logback 的配置中更改什么来解决这个问题?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。