web-dev-qa-db-ja.com

Log4j2-エラー処理要素Appender

Log4j2をテストする簡単なプログラムを書きたかった。ほとんどのコードを manual からコピーしました。これは私が得るエラーです:

2016-05-02 10:11:31,054 main ERROR Error processing element Appender ([Appenders: null]): CLASS_NOT_FOUND
2016-05-02 10:11:31,054 main ERROR Error processing element Appender ([Appenders: null]): CLASS_NOT_FOUND
2016-05-02 10:11:31,117 main ERROR Unable to locate appender "STDOUT" for logger config "root"
2016-05-02 10:11:31,117 main ERROR Unable to locate appender "File" for logger config "MyLogger"

私のJavaコード:

package log4jtest;

import org.Apache.logging.log4j.LogManager;
import org.Apache.logging.log4j.Logger;

public class Log4jtest {
    private static final Logger logger = LogManager.getLogger("MyLogger");
    public static void main(String[] args) {
        logger.error("Hello, World!");
    }
}

私のlog4j2構成ファイル:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" name="Log4jTest" packages="">
    <Properties>
        <Property name="filename">test.log</Property>
    </Properties>

    <Appenders>
        <Appender type="Console" name="STDOUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Appender>

        <Appender type="File" name="File" fileName="${filename}">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Appender>
    </Appenders>

    <Loggers>
        <Logger name="MyLogger" level="ALL" additivity="false">
            <AppenderRef ref="File" />
        </Logger>
        <Root level="ALL">
            <AppenderRef ref="STDOUT" />
        </Root>
    </Loggers>
</Configuration>

このエラーを修正する方法はありますか?

8
Stoffl

Log4j 2では、アペンダーのタイプは、type属性ではなく、要素の名前で指定されます。

つまり、次のような行を置き換えます

    <Appender type="Console" name="STDOUT">

そして

    <Appender type="File" name="File" fileName="${filename}">

    <Console name="STDOUT">

そして

    <File name="File" fileName="${filename}">

Log4j 2のアペンダーに関するドキュメント も参照してください。

10
Luke Woodward