gpt4 book ai didi

java - 如何从 logback 中的 Java 堆栈跟踪中删除换行符?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:52:23 27 4
gpt4 key购买 nike

我正在尝试从 Java 堆栈跟踪中删除换行符。

我遵循了 logback 模式 -

<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %replace(%msg){'\n', ''}%n</pattern>

我希望它能替换消息中的换行符,但它并没有这样做。我看到用换行符打印出来的堆栈跟踪。

但是,如果我使用以下模式(仅用于测试目的)-

<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %replace(%msg){'.*', 'x'}%n</pattern>

我发现消息被替换为字符 x 但堆栈跟踪仍按原样打印。

这让我相信 logback 会独立处理堆栈跟踪。我已经阅读了 logback 文档,它说可以通过 (%ex) 引用 stacktraes。

但是,对于 appender,我一次只能激活一个模式。如何确保我不会在堆栈跟踪中换行?

最佳答案

在查看了 Logback 格式化程序如何在我的 Windows 机器上构建字符串后,我看到堆栈跟踪包含 \r\n对于每个新行,所以如果您使用的是 Windows,请改为尝试:

<pattern>........ %replace(%ex){'[\r\n]+', '\\n'}%nopex%n</pattern>

解释:

  • \r\n : 起初我只尝试了 %replace(%ex){'\n', 'X'}但后来我在日志中有了换行符,然后是“X”。相反,使用 %replace(%ex){'[\r\n]+', ''}删除所有出现的 \r\n .如果要显示字符串 "\n"表示此处换行,您可以添加 '\\n'%replace第二个参数。

  • %nopex : 我不知道为什么,但如果你使用 %replace%ex , Logback 向您的条目添加第二个堆栈跟踪,这次是所有新行。使用 %nopex (参见 documentation ),它将通过伪造使用没有任何 %replace 的实际堆栈来抑制第二个堆栈。 .

关于java - 如何从 logback 中的 Java 堆栈跟踪中删除换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38669537/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com