Spring Boot 日志记录 - 每个日志条目开头的无关连字符
SpringBoot logging - extraneous hyphen at start of every log entry
我正在尝试从 SpringBoot 1.3 中的控制台和文件日志中删除前导连字符。5.RELEASE 使用默认的 logback 配置。
记录模式如下:
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}'
文件日志模式类似,没有颜色编码。两者都输出每一行 after 第一行带有前导连字符,这使我们的 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..
我在文档中看不到任何提及此行为的内容。如果可能,欢迎就如何消除它提出任何建议!
更新
感谢埃德加在下面的回答,事实证明这是由我们日志模式末尾的以下内容引起的:
${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
如果您不提供完整的日志记录格式,就很难进行诊断。我在我们的代码中看到类似的东西,它似乎与在格式中包含它有关:
${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
如果您正在使用它,那么连字符可能是 %w 之前的那个。我不确定这样做的目的是什么。如果我找到它,我会把它添加到我的答案中。
问题出在logging.pattern.console
这部分:
${LOG_EXCEPTION_CONVERSION_WORD:-%rEx}
:-
是 Logback 的默认值分隔符,您应该在 logback.xml 中使用。但是,您在 application.properties
中配置了应该使用的 Spring 框架的默认值定界符 (:
)。
正如您使用的 :-
,您是说使用 LOG_EXCEPTION_CONVERSION_WORD
的值,如果未设置,则使用 -%rEx
。
正确的语法是:
${LOG_EXCEPTION_CONVERSION_WORD:%rEx}
我正在尝试从 SpringBoot 1.3 中的控制台和文件日志中删除前导连字符。5.RELEASE 使用默认的 logback 配置。
记录模式如下:
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}'
文件日志模式类似,没有颜色编码。两者都输出每一行 after 第一行带有前导连字符,这使我们的 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..
我在文档中看不到任何提及此行为的内容。如果可能,欢迎就如何消除它提出任何建议!
更新
感谢埃德加在下面的回答,事实证明这是由我们日志模式末尾的以下内容引起的:
${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
如果您不提供完整的日志记录格式,就很难进行诊断。我在我们的代码中看到类似的东西,它似乎与在格式中包含它有关:
${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
如果您正在使用它,那么连字符可能是 %w 之前的那个。我不确定这样做的目的是什么。如果我找到它,我会把它添加到我的答案中。
问题出在logging.pattern.console
这部分:
${LOG_EXCEPTION_CONVERSION_WORD:-%rEx}
:-
是 Logback 的默认值分隔符,您应该在 logback.xml 中使用。但是,您在 application.properties
中配置了应该使用的 Spring 框架的默认值定界符 (:
)。
正如您使用的 :-
,您是说使用 LOG_EXCEPTION_CONVERSION_WORD
的值,如果未设置,则使用 -%rEx
。
正确的语法是:
${LOG_EXCEPTION_CONVERSION_WORD:%rEx}