SpringBoot日志记录 - 每个日志条目开始时的无关连字符

时间:2016-06-21 10:59:09

标签: java logging spring-boot logback

我试图从我们的控制台中删除一个前导连字符,并使用默认的logback配置在SpringBoot 1.3.5.RELEASE中记录日志。

记录模式如下:

logging:
  pattern:
    console: '%d{yyyy-MM-dd HH:mm:ss.SSS} %clr([${spring.application.name}]){red} %clr(%5p) %clr(${PID:- }){magenta} %clr(---){faint} %X{req.requestId} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%rEx}'

文件日志模式类似,没有颜色编码。两者都输出之后的第一行带有一个前导连字符,这使得我们的syslog - logstash - grok过滤更加棘手。示例输出:

2016-06-21 11:52:00.576 [my-app] INFO etc.. (application started)
-2016-06-21 11:52:00.583 [my-app] DEBUG etc..
-2016-06-21 11:52:00.583 [my-app] INFO etc..

我无法在文档中看到任何提及此行为的内容。欢迎任何有关如何消除它的建议!

更新

感谢Edgar在下面的回答,结果证明这是由我们的记录模式结束时的以下原因造成的:

${LOG_EXCEPTION_CONVERSION_WORD:-%rEx}

我将其替换为:

$ {LOG_EXCEPTION_CONVERSION_WORD:%REX}

瞧,以下行开头的连字符消失了。见http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html#boot-features-custom-log-configuration

2 个答案:

答案 0 :(得分:10)

问题在于logging.pattern.console

的这一部分
${LOG_EXCEPTION_CONVERSION_WORD:-%rEx}

:-是Logback的默认值分隔符,是你应该在logback.xml中使用的。但是,您需要在application.properties中配置应该使用的Spring Framework的默认值分隔符(:)。

当您使用:-时,您说的是使用LOG_EXCEPTION_CONVERSION_WORD的值,如果未设置,则使用-%rEx代替${LOG_EXCEPTION_CONVERSION_WORD:%rEx}

正确的语法是:

fetchOne()

答案 1 :(得分:4)

如果没有提供完整的日志记录格式,很难诊断出来。我在代码中看到类似内容,似乎与以下格式包含此内容有关:

$ {LOG_EXCEPTION_CONVERSION_WORD: - %WEX}

如果您正在使用它,则连字符可能是%w之前的连字符。我不确定这个的目的是什么。如果我找到它,我会将其添加到我的答案中。