86 Stimmen

log4j:WARN Es konnten keine Appenders für Logger in web.xml gefunden werden

Ich habe die log4jConfigLocation bereits in web.xml eingetragen, aber ich erhalte immer noch die folgende Warnung:

log4j:WARN No appenders could be found for logger 
     (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.

Was habe ich verpasst?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
    "java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/applicationContext.xml
        </param-value>
    </context-param>
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/classes/log4j.properties</param-value>
    </context-param>

    <listener>
        <listener-class>
            org.springframework.web.util.Log4jConfigListener
        </listener-class>
    </listener>
    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

    <servlet>
        <servlet-name>suara2</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>suara2</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

0 Stimmen

5voto

GARIMA KILLEDAR Punkte 141

Wenn Sie für die eigenständigen log4j-Anwendungen konfigurieren möchten, können Sie den BasicConfigurator verwenden. Diese Lösung eignet sich nicht für Webanwendungen wie die Spring-Umgebung.

Sie müssen schreiben

BasicConfigurator.configure();

ou

ServletContext sc = config.getServletContext();
String log4jLocation = config.getInitParameter("log4j-properties-location");
String webAppPath = sc.getRealPath("/");
String log4jProp = webAppPath + log4jLocation;
PropertyConfigurator.configure(log4jProp);

4voto

Marcelo Daniel Punkte 143

Wenn es immer noch hilft, überprüfen Sie den Namen des Archivs, er muss genau "log4j.properties" oder "log4j.xml" lauten (Groß- und Kleinschreibung beachten), und folgen Sie dem Hinweis von "Alain O'Dea". Ich hatte die gleiche Fehlermeldung, aber nachdem ich diese Änderungen vorgenommen hatte, funktionierte alles einwandfrei. einfach wie ein Zauber :-). Ich hoffe, das hilft.

3voto

jbatista Punkte 948

In meinem Fall war die Lösung einfach. Sie müssen nichts in Ihrer Datenbank deklarieren. web.xml .

Da Ihr Projekt eine Webanwendung ist, sollte die Konfigurationsdatei auf WEB-INF/classes nach dem Einsatz. Ich empfehle Ihnen, einen Java-Ressourcenordner zu erstellen ( src/main/resources ), um dies zu tun (beste Vorgehensweise). Eine andere Möglichkeit ist, die Konfigurationsdatei in Ihre src/main/java .

Seien Sie vorsichtig mit dem Namen der Konfigurationsdatei. Wenn Sie XML verwenden, lautet der Dateiname log4j.xml sonst log4j.properties .

3voto

MariemJab Punkte 679

Fügen Sie diese Zeilen am Anfang der Datei web.xml ein:

<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:/main/resources/log4j.xml</param-value>
</context-param>

0 Stimmen

Sie müssen die log4jConfigLocation nicht angeben. Es würde aus dem Klassenpfad genommen.

0 Stimmen

Haben Sie die Xml-Datei in den Klassenordner eingefügt?

0 Stimmen

Mein log4j ist unter src/main/resources/log4j.xml (ich verwende Spring Integration und meine Konfigurationsdatei ist unter src/min/resources/META-INF/spring/integration/spring-integration-context.xml)

1voto

M The Developer Punkte 49

OK, ich sehe eine Menge Antworten und einige sind sehr richtig. Aber keine hat mein Problem gelöst. Das Problem in meinem Fall war, dass die UNIX-Dateisystemberechtigungen die Datei log4j.properties, die ich auf dem Server bearbeitete, als Eigentum von Root und nur für Root lesbar auswiesen. Die Webanwendung, die ich bereitstellen wollte, konnte die Datei jedoch nicht lesen, da Tomcat auf Linux-Systemen standardmäßig als Benutzer Tomcat läuft. Ich hoffe, das hilft. Die Lösung war also die Eingabe von "chown tomcat:tomcat log4j.properties" in dem Verzeichnis, in dem sich die Datei log4j.properties befindet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X