ERROR StatusLogger 处理 Appender 时发生异常

Imi*_*hau 7 java websphere logging log4j

我们正在将一个 Web 应用程序从 log4j 迁移到 log4j2。

该应用程序使用 SLF4J 并包含以下依赖项:

  • 日志4j
  • slf4j-api
  • slf4j-log4j12
  • jcl-over-slf4j

并排除所有可能引用公共日志记录的内容。

我们通过以下方式替换了旧的 log4j 依赖项:

  • log4j-api
  • log4j-核心
  • log4j-slf4j-impl
  • log4j-web

日志配置文件是使用 servlet 加载的。

在 Websphere 中部署 de EAR 文件时出现以下异常:

ERROR StatusLogger An exception occurred processing Appender rollingFileMijntoekomst
 java.lang.ClassCastException: java.lang.String incompatible with java.util.Map$Entry
    at org.apache.logging.log4j.message.ParameterFormatter.appendMap(ParameterFormatter.java:563)
    at org.apache.logging.log4j.message.ParameterFormatter.appendPotentiallyRecursiveValue(ParameterFormatter.java:498)
    at org.apache.logging.log4j.message.ParameterFormatter.recursiveDeepToString(ParameterFormatter.java:456)
    at org.apache.logging.log4j.message.ParameterFormatter.formatMessage2(ParameterFormatter.java:189)
    at org.apache.logging.log4j.message.ParameterizedMessage.formatTo(ParameterizedMessage.java:228)
    at org.apache.logging.log4j.core.pattern.MessagePatternConverter.format(MessagePatternConverter.java:120)
    at org.apache.logging.log4j.core.pattern.PatternFormatter.format(PatternFormatter.java:38)
    at org.apache.logging.log4j.core.layout.PatternLayout$PatternSerializer.toSerializable(PatternLayout.java:341)
    at org.apache.logging.log4j.core.layout.PatternLayout.toText(PatternLayout.java:240)
    at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:225)
    at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:59)
    at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:197)
    at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:190)
    at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:181)
    at org.apache.logging.log4j.core.appender.RollingFileAppender.append(RollingFileAppender.java:312)
    at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
    at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
    at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
    at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
    at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:543)
    at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:502)
    at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:485)
    at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:460)
    at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:82)
    at org.apache.logging.log4j.core.Logger.log(Logger.java:162)
    at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2190)
    at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2144)
    at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2127)
    at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2020)
    at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1891)
    at org.apache.logging.slf4j.Log4jLogger.info(Log4jLogger.java:184)
Run Code Online (Sandbox Code Playgroud)

这是 log4j.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug" strict="true"
    name="XMLConfigTest">

    <Properties>
        <Property name="filenameApp">${sys:wotap.app.logs}/app-${sys:SERVER_NAME}${sys:logfilenaam_aparte_contextroot}.AppNew.log</Property>
    </Properties>

    <Appenders>
        <Appender type="Console" name="STDOUT">
            <Layout type="PatternLayout" pattern="%d %p [%c] - %m%n" />
        </Appender>

        <RollingFile name="rollingFileApp" fileName="${filenameApp}" filePattern="${filenameApp}.%d{yyyy-MM-dd}" ignoreExceptions="false">
            <PatternLayout>
                <Pattern>%d [%t] %-5p (%F:%L) - %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" />
            </Policies>
            <DefaultRolloverStrategy max="5" />
        </RollingFile>
    </Appenders>

    <Loggers>
        <Logger
            name="org.apache.logging.log4j.core.appender.ConsoleAppender">
            <AppenderRef ref="STDOUT" />
        </Logger>

        <Logger name="web.app.example" level="debug">
            <AppenderRef ref="rollingFileApp" />
        </Logger>
        
        <Logger name="org.springframework.ws.server.MessageTracing" level="debug">
            <AppenderRef ref="rollingFileApp" />
        </Logger>
        
        <Logger name="org.springframework.ws.client.MessageTracing" level="debug">
            <AppenderRef ref="rollingFileApp" />
        </Logger>

        <Root level="debug">
        </Root>
    </Loggers>

</Configuration>

Run Code Online (Sandbox Code Playgroud)

知道错误在哪里吗?