【发布时间】:2018-04-06 15:41:17
【问题描述】:
由于我无法控制的原因,我必须使用的某些日志记录基础架构无法正确处理换行符。
解决方法是将\n 替换为另一个字符,例如_newline_
这可以通过配置模式在 logback 中完成:
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- Standard pattern -->
<!-- <pattern>%coloredLevel - %logger - %message%n%xException{15}</pattern> -->
<!-- With newlines removed -->
<pattern>%coloredLevel - %logger - %replace(%message){'\n', '_newline_'}_newline_%replace(%xException){'\n', '_newline_'}%nopex%n</pattern>
</encoder>
</appender>
但是,如果没有异常,这会在日志行中添加一个多余的 _newline_。 (并在堆栈跟踪中添加了一个额外的换行符,但这不是一个大问题)
有没有办法只在消息和是否有异常之间输出_newline_?
【问题讨论】:
-
再次检查你的行,我认为你有一个错字,你在 %replace(){} 调用之外硬编码 newline ,这意味着它总是被发出。
-
@MichaelLang 正确,但否则日志消息和异常消息/堆栈跟踪之间不会有新行
标签: logback