我有带有日志行的代码,如下所示:
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/