如何在Logback/SLF4J中记录多行文本?

10
我想使用Logback/SLF4J记录"漂亮格式化"的XML。目前,日志中的内容完全无法阅读,我必须打开某些东西来解析它。我希望能够配置调试日志(因为我只想在调试时看到XML),以人类可读的方式输出XML。这是否可能?
1个回答

16

在日志语句中添加一个换行符\n

log.info("Message id: {}\nContents: {}", id, xml);

更新:为了漂亮地打印XML,请查看:如何从Java漂亮地打印XML?。请记住,如果XML不会被实际打印,就没有必要执行昂贵的格式化。因此,这是一种罕见的情况,应该使用is*Enabled()

if(log.isInfoEnabled())
  log.info("Message: {}", prettyFormat(xml));

这只会创建两行。一行是ID,另一行是XML。这并不是一个很好的格式化输出方式;-) - Krystian
@Krystian:抱歉,我误解了你的意思。请看我的更新答案。 - Tomasz Nurkiewicz
额..我犯了一个致命的错误。我知道响应中返回的是格式良好的 XML,但似乎我用来获取响应的 reader 将所有换行符都删除了。这实际上不是日志记录问题。一旦我将代码更改为将原始响应传递给记录器,一切都开始正常工作了。我已将您的答案标记为正确答案,因为对于获取原始 xml 的人来说,它将完美地起作用。谢谢。 - Krystian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接