【问题标题】:Logback string lengthLogback 字符串长度
【发布时间】:2017-10-11 00:21:36
【问题描述】:

我正在使用 logback 记录到我的 Spring Boot 服务中的滚动文件。在我的一个课程中,我试图记录一个非常长的字符串(一个非常大的对象数组的字符串值,可以有数万个元素)。

log.info(str);

上面没有打印,可能是因为str的值是一个很长很长的字符串。

//logback truncates the list - to preserve this we should record it in an audit table
            String rl = String.valueOf(reptIdList);
            String truncRlStr = rl.substring(0, Math.min(rl.length(), 100));
        log.info(truncRlStr);

上面确实打印了。可能是因为我将很长的字符串截断为 100 个字符。

logback 中的字符串长度可能有限制 - 有没有办法将其设置为最大字符串长度?我注意到登录控制台时字符串长度没有限制。

感谢您的建议。

【问题讨论】:

  • 这很有趣。 Logback 文档没有说明最大长度。但是您当然可以通过在 logback xml 中指定长度来截断它
  • 请尝试编写一个显示此错误的小应用程序。结果可能是其他事情在这里失败了,而不是 logback。
  • 您找到解决方案了吗?您是否尝试过类似'log.info(“{}”,str);' ?

标签: java spring log4j logback slf4j


【解决方案1】:

我知道现在这是一个老问题了,OS 在她/他的生活中继续前进,但它对来到这个帖子的人很有用。

您可以使用以下命令限制 logback 记录的字符数:%.-<limit>msg

例如将字符数限制为 100:

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>
            %.-30msg%n
        </Pattern>
    </layout>
</appender>

PS:我使用 ch.qos.logback 库对此进行了测试

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 2012-11-06
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    相关资源
    最近更新 更多