Logback正在打印%n而不是新行



我通过Slf4j使用Logback。我有一个配置如下的附加程序:

<appender name="PLAN_STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- On Windows, this will also require org.fusesource.jansi:jansi:1.17
(or higher) on the classpath.  On a Mac, it works without it -->
<withJansi>true</withJansi>
<encoder>
<pattern>%d{HH:mm:ss.SSS} %blue(%msg) %n</pattern>
</encoder>
</appender>

当我向该记录器发送消息时,它们会显示在控制台上(如预期(,文本为蓝色(如预期的(。但是,在文本之后,它打印%n,而不是新行,因此输出看起来像

17:36:50.184 This text is in blue %n17:36:50.200 This text is one the same line

我没有在其他地方做任何复杂的事情。我通过获取记录器

private final static Logger planLogger = LoggerFactory.getLogger("PLAN")

并像一样使用它

logger.info("=== Summary ===");
for (var d: data) {
logger.info("  Data: {}", d);
}

我试着做一个简单的例子,只使用slf4j-api、Logback-classic和Logback-core作为依赖项来复制它,它如预期的那样工作。我怀疑问题是整个系统依赖于其他干扰,但我不知道是什么。

在整个系统中,这些是我拥有的与日志相关的依赖项。

$ mvn dependency:tree | egrep 'log|slf4j'
[INFO] |  - org.slf4j:slf4j-api:jar:1.7.30:compile
[INFO] |  |  |  +- org.slf4j:jcl-over-slf4j:jar:1.7.29:runtime
[INFO] +- ch.qos.logback:logback-classic:jar:1.2.6:runtime
[INFO] |  - ch.qos.logback:logback-core:jar:1.2.6:runtime
[INFO] +- org.apache.logging.log4j:log4j-api:jar:2.17.1:compile
[INFO] - org.apache.logging.log4j:log4j-core:jar:2.17.1:compile

(我知道,依赖log4j和logback是不好的。但我不负责执行这些事情。(

我尝试更新我的pom以包含所有这些依赖项,但简单的测试仍然有效。

如果这很重要的话,我在Mac上。

有人经历过这样的事情吗?或者知道是什么导致了这种情况?

这似乎是logback中的一个已知问题:%n颜色分组后不起作用

David Eckel对此问题的评论显示了一种变通方法:

解决方法:添加一个空选项列表:

<pattern>%magenta(%message){}%n</pattern>

相关内容

  • 没有找到相关文章

最新更新