首页 > 解决方案 > 如何理解 logback 的 writeLoopOnConverters 抛出 stackoverflow

问题描述

当我的应用程序写入目标硬盘发生故障时。

java程序抛出异常如下:

Caused by: java.lang.StackOverflowError: null
    at java.base/java.text.SimpleDateFormat.zeroPaddingNumber(SimpleDateFormat.java:1405)
    at java.base/java.text.SimpleDateFormat.subFormat(SimpleDateFormat.java:1180)
    at java.base/java.text.SimpleDateFormat.format(SimpleDateFormat.java:997)
    at java.base/java.text.SimpleDateFormat.format(SimpleDateFormat.java:967)
    at java.base/java.text.DateFormat.format(DateFormat.java:374)
    at ch.qos.logback.core.util.CachingDateFormatter.format(CachingDateFormatter.java:48)
    at ch.qos.logback.classic.pattern.DateConverter.convert(DateConverter.java:61)
    at ch.qos.logback.classic.pattern.DateConverter.convert(DateConverter.java:23)
    at ch.qos.logback.core.pattern.FormattingConverter.write(FormattingConverter.java:36)
    at ch.qos.logback.core.pattern.PatternLayoutBase.writeLoopOnConverters(PatternLayoutBase.java:115)
    at ch.qos.logback.classic.PatternLayout.doLayout(PatternLayout.java:141)
    at ch.qos.logback.classic.PatternLayout.doLayout(PatternLayout.java:39)
    at ch.qos.logback.core.encoder.LayoutWrappingEncoder.encode(LayoutWrappingEncoder.java:115)
    at ch.qos.logback.core.OutputStreamAppender.subAppend(OutputStreamAppender.java:230)
    at ch.qos.logback.core.rolling.RollingFileAppender.subAppend(RollingFileAppender.java:235)
    at ch.qos.logback.core.OutputStreamAppender.append(OutputStreamAppender.java:102)
    at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:84)
    at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51)
    at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:270)

标签: javarecursionstack-overflowlogbacknas

解决方案


推荐阅读