Java

Log4J2で、xmlの設定ファイルのパースエラーが出ていないのに Unable to locate appender ** が出る

Log4J2を設定したところ、以下のエラーが出ました。

2021-09-29 10:44:38,966 main ERROR Unable to locate appender "RollingFile" for logger config "root"

設定はxmlで行っていて以下の通り。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <RollingFile name="RollingFile" fileName="${sys:user.home}/.samurai.log"
                     filePattern="${sys:user.home}/.samurai-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="20 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="3"/>
        </RollingFile>
    </Appenders>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
</Configuration>

間違い無くRollingFileというAppenderは設定してあるし、設定ファイルのパースにあたってエラーも出ていないのにおかしいなー?と思えば、Appenders要素が重複していまいた。恐らく後に登場するConsoleのAppenderの設定のみが生きてしまっているようです。

</Appenders>
<Appenders>

を削除して、以下のようにしたら期待通り動作しました。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <RollingFile name="RollingFile" fileName="${sys:user.home}/.samurai.log"
                     filePattern="${sys:user.home}/.samurai-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="20 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="3"/>
        </RollingFile>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
</Configuration>