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

Tom*_*ing 8 java logging logback spring-boot

我试图从我们的控制台中删除一个前导连字符,并使用默认的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}'
Run Code Online (Sandbox Code Playgroud)

文件日志模式类似,没有颜色编码.两者都第一行之后用前导连字符输出每一行,这使我们的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..
Run Code Online (Sandbox Code Playgroud)

我在文档中看不到任何提及此行为的内容.如果可能的话,欢迎任何关于如何消除它的建议!

更新

感谢Edgar在下面的回答,结果证明这是由我们的日志记录模式结束时的以下内容引起的:

${LOG_EXCEPTION_CONVERSION_WORD:-%rEx}
Run Code Online (Sandbox Code Playgroud)

我把它替换为:

$ {LOG_EXCEPTION_CONVERSION_WORD:%雷克斯}

et voila,下一行开头的连字符消失了.请参阅http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html#boot-features-custom-log-configuration

And*_*son 12

问题在于以下部分logging.pattern.console:

${LOG_EXCEPTION_CONVERSION_WORD:-%rEx}
Run Code Online (Sandbox Code Playgroud)

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

正如您所使用的:-,您所说的是使用和的值LOG_EXCEPTION_CONVERSION_WORD,如果没有设置,请使用-%rEx.

正确的语法是:

${LOG_EXCEPTION_CONVERSION_WORD:%rEx}
Run Code Online (Sandbox Code Playgroud)

  • 文档链接是[这里](http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-custom-log-configuration),搜索“你应该使用Spring Boot的语法” (2认同)

小智 7

如果没有提供完整的日志记录格式,则很难诊断。我在我们的代码中看到了类似的东西,这似乎与在格式中包括以下内容有关:

$ {LOG_EXCEPTION_CONVERSION_WORD:-%wEx}

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