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>
このエラーを修正する方法はありますか?
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のアペンダーに関するドキュメント も参照してください。