In letzter Zeit habe ich beschlossen, den Umgang mit dem log4j2-Logger zu lernen. Ich habe die erforderlichen JAR-Dateien heruntergeladen, eine Bibliothek und eine XML-Konfigurationsdatei erstellt und versucht, sie zu verwenden. Leider bekomme ich diese Aussage in der Konsole (Eclipse):
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
Dies ist mein Testklassencode:
package log4j.test;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Log4jTest
{
static final Logger logger = LogManager.getLogger(Logger.class.getName());
public static void main(String[] args) {
logger.trace("trace");
logger.debug("debug");
logger.info("info");
logger.warn("warn");
logger.error("error");
logger.fatal("fatal");
}
}
Und meine XML-Konfigurationsdatei:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration package="log4j.test"
status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="log4j.test.Log4jTest" level="trace">
<AppenderRef ref="Console"/>
</Logger>
<Root level="trace">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
Ich habe es auch mit XML ohne <Logger>
Tags und Paketspezifikation und in verschiedenen Ordnern / Paketverzeichnissen versucht , aber es hat nicht geholfen. Jetzt log4j2.xml
befindet sich meine Datei direkt im Projektordner in Eclipse.
Antworten:
Ist dies ein einfaches Eclipse-Java-Projekt ohne Maven usw.? In diesem Fall müssen Sie die
log4j2.xml
Datei imsrc
Ordner ablegen, um sie im Klassenpfad finden zu können. Wenn Sie Maven verwenden, legen Sie es untersrc/main/resources
odersrc/test/resources
quelle
sbt
daslog4j2.xml
gehtsrc/main/resources
auch rein.Sie müssen eine der folgenden Lösungen auswählen:
quelle
-Dlog4j.configurationFile
ist das, was ich brauchte, da das Projekt, an dem ich arbeite, nicht auf Maven basiert. GenialBefolgte die Dokumentationen - Apache Log4j2 Configuratoin und Apache Log4j2 Maven bei der Konfiguration von log4j2 mit yaml. Gemäß der Dokumentation sind die folgenden Maven-Abhängigkeiten erforderlich:
und
Nur diese hinzuzufügen, hat die Konfiguration nicht ausgewählt und immer einen Fehler ausgegeben. Das Debuggen der Konfiguration durch Hinzufügen
-Dorg.apache.logging.log4j.simplelog.StatusLogger.level=TRACE
half beim Anzeigen der Protokolle. Später musste die Quelle mit Maven heruntergeladen werden und das Debuggen half beim Verständnis der abhängigen Klassen von log4j2. Sie sind aufgeführt inorg.apache.logging.log4j.core.config.yaml.YamlConfigurationFactory
:Das Hinzufügen der Abhängigkeitszuordnung für
jackson-dataformat-yaml
hat nicht die ersten beiden Klassen.jackson-databind
Fügen Sie daher die Abhängigkeit hinzu, damit die Yaml-Konfiguration funktioniert:Sie können die Version hinzufügen, indem Sie auf den
Test Dependencies
Abschnitt deslog4j-api
Versionselements aus dem MVN-Repository verweisen . Beispiel für die Version 2.8.1 von log4j-api, verweisen Sie auf diesen Link und suchen Sie diejackson-databind
Version.Darüber hinaus können Sie mit dem folgenden Java-Code überprüfen, ob die Klassen im Klassenpfad verfügbar sind:
quelle
Eclipse sieht keine Datei, bis Sie eine Aktualisierung der IDE erzwingen. Es ist eine Funktion! Sie können die Datei also im gesamten Projekt ablegen, und Eclipse ignoriert sie vollständig und wirft diese Fehler aus. Klicken Sie in der Eclipse-Projektansicht auf Aktualisieren, und dann funktioniert es.
quelle
Zusätzlich zu dem, was Tomasz W geschrieben hat, können Sie beim Starten Ihrer Anwendung folgende Einstellungen verwenden:
um die meisten Konfigurationsprobleme zu bekommen.
Weitere Informationen finden Sie unter Log4j2-FAQ: Wie debugge ich meine Konfiguration?
quelle
In meinem Fall musste ich es in den bin-Ordner meines Projekts legen, auch wenn mein Klassenpfad auf den src-Ordner gesetzt ist. Ich habe keine Ahnung warum, aber es ist einen Versuch wert.
quelle