Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何防止logback/slf4j解析新行字符_Java_Logging_Slf4j_Logback - Fatal编程技术网

Java 如何防止logback/slf4j解析新行字符

Java 如何防止logback/slf4j解析新行字符,java,logging,slf4j,logback,Java,Logging,Slf4j,Logback,我正在使用带有SLF4j的logback来登录我的应用程序。我有一个包含新行字符的字符串。它是字符串值的一部分,但不表示新行。当我打印字符串时,logback会在新行中打印它。如何预防 代码: 回写模式: <pattern>[%d{dd MMM yyyy HH:mm:ss,SSS}] [%5p] [%X{sid}] [%-20C{0} %25M]:[%-4L] - %m%n</pattern> 实际产量: [19 Feb 2015 20:19:27] [ INFO] [

我正在使用带有SLF4j的logback来登录我的应用程序。我有一个包含新行字符的字符串。它是字符串值的一部分,但不表示新行。当我打印字符串时,logback会在新行中打印它。如何预防

代码:

回写模式:

<pattern>[%d{dd MMM yyyy HH:mm:ss,SSS}] [%5p] [%X{sid}] [%-20C{0} %25M]:[%-4L] - %m%n</pattern>
实际产量:

[19 Feb 2015 20:19:27] [ INFO] [] [myClass myMethod]:[52  ] - george
mason
您可以向模式中添加一个选项,以便将消息中的任何新行字符替换为其他字符,例如空格:

%replace(%m){'\n', ' '}
在您的情况下,您希望将
\n
替换为
\\n

<pattern>[%d{dd MMM yyyy HH:mm:ss,SSS}] [%5p] [%X{sid}] [%-20C{0} %25M]:[%-4L] - %replace(%m){'\n', '\\n'}%n</pattern>
[%d{dd MMM yyyy HH:mm:ss,SSS}][%5p][%X{sid}][%-20C{0}%25M]:[%-4L]-%replace(%m){'\n','\\n}%n

此更换是否昂贵?我的strack traces现在已经\n。有办法解决这个问题吗?这不是真正的担忧,但在这种情况下最好避免。这实际上是一个单独的问题。:)他们是因为这个替换而来的。除此之外,他们都很好您最初的问题是如何防止邮件中出现新行。你的新问题是如何用新行显示堆栈跟踪。这是相关的,但不同。
replace
模式应用于消息,因此,如果stacktrace已被替换,\n可能是因为应用程序已将它们记录在消息中。您必须修改应用程序以将异常从消息中分离出来,或者修改
replace
选项的regex,以便它只替换不属于异常的新行。
%replace(%m){'\n', ' '}
<pattern>[%d{dd MMM yyyy HH:mm:ss,SSS}] [%5p] [%X{sid}] [%-20C{0} %25M]:[%-4L] - %replace(%m){'\n', '\\n'}%n</pattern>