java - Logback 占位符不适用于测试

标签 java logging slf4j logback

我有带有日志行的代码,如下所示:

log.info("Message received with ID :"+ messageId);

我需要将所有 concat 更改为带有占位符的 logback 样式。

log.info("Message received with ID :{}", messageId);

它工作正常,当我看到日志时,它们就正常了。我还进行了基于日志记录的测试,我编写期望消息,然后发送它通过逻辑传递的消息,并检查日志是否与预期相同。 http://www.infoq.com/articles/Utilizing-Logging 。当我有 concat 样式日志时,一切都很好,但现在我看不到值,我在这个测试中看到括号 {},但它们都失败了。 所以,应用程序给了我:

Message received with ID : 32145

但是测试给了我:

Message received with ID :{}

有人遇到同样的问题吗?如何解决?请帮我。谢谢。

最佳答案

该问题很可能是 InfoQ article 中提到的 TestLoggingAppender 中的实现问题。 。文章提到了它的doAppend方法的实现:

public synchronized void doAppend(LoggingEvent loggingEvent) {
  String msg = **loggingEvent.getMessage()**.toString();
}

在 logback-classic 中,ILoggingEvent .getMessage() 方法返回原始(未格式化)消息。您需要调用getFormattedMessage()检索格式化的消息。

关于java - Logback 占位符不适用于测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11776936/

相关文章:

Linux 非阻塞 fifo(按需日志记录)

Git 标签列表,显示提交的 sha1 哈希值

tomcat - 如何将 Jenkins 与现代日志记录框架一起使用?

logging - 如何同时使用 log4 和 logback?

java - 结合groovy和java编译报错(使用maven)

java - Camunda 用户任务执行失败

java - 3.0 servlet 中的 Log4J2 配置

java - 用奇怪的时区解析 Java 中的日期

java - XOR 用于比较 Random 类中的多头?

java - slf4j 记录器不打印完整的包名称