2016-05-02 14 views
1

Ich wollte ein einfaches Programm schreiben, um log4j2 zu testen. Ich habe den Großteil meines Codes aus der manual kopiert. Dies ist der Fehler, den ich bekommen:Log4j2 - Fehler Verarbeitungselement Appender

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" 

Mein Java-Code:

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!"); 
    } 
} 

Meine log4j2 Konfigurationsdatei:

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

Irgendwelche Ideen, wie dieser Fehler zu beheben?

Antwort

5

Log4j In 2 ist die Art des appender ist im Namen des Elements spezifiziert ist, nicht mit einem type Attribute.

Mit anderen Worten ersetzen Linien wie

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

und

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

mit

<Console name="STDOUT"> 

und

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

Siehe auch die Log4j 2 documentation on appenders.

+2

Eigentlich wäre seine Syntax korrekt, wenn er einfach strict =" true "als Attribut für das Configuration-Element hinzugefügt hätte. – rgoers

-2

Verwenden folgende Zeile

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

Nein, diese Zeile nicht verwenden. So arbeitet man mit Log4j 1, der Fragesteller fragt nach Log4j 2. –

+0

Ich bekomme immer noch den gleichen Fehler, wenn ich 'public static Loggerlogger = Logger.getLogger (" MyLogger ") verwende;' statt 'private static final Logger Logger = LogManager.getLogger ("MyLogger"); ' – Stoffl

Verwandte Themen