我正在通过 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 上。
有没有人经历过这样的事情,或者知道是什么原因造成的?