2016-05-02 26 views
1

私はlog4j2をテストするための簡単なプログラムを書こうと思っていました。 manualのコードのほとんどをコピーしました。 これは私が取得エラーです:このエラーを修正する方法Log4j2 - エラー処理要素Appender

<?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> 

任意のアイデア:

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設定ファイル? Log4jの2において

答えて

5

アペンダの種類がないtype属性で、要素の名前で指定されています。すなわち

、例えば

<Console name="STDOUT"> 

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

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

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

として行を置き換えます0

Log4j 2 documentation on appendersも参照してください。

+2

実際には、彼が単純に設定要素の属性としてstrict =" true "を追加した場合、彼の構文は正しいでしょう。 – rgoers

-2

使用し、次の行

public static Logger logger = Logger.getLogger("MyLogger"); 
+0

いいえ、その行は使用しないでください。これはLog4j 1で作業する方法です。質問者がLog4j 2について質問しています。 –

+0

'public static Logger logger = Logger.getLogger(" MyLogger ");'を使用すると、同じエラーが表示されます。 Logger logger = LogManager.getLogger( "MyLogger"); ' – Stoffl

関連する問題