Tomcat 6: log4j:ERROR Attempted to append to closed appender named [ConsoleAppender]

Herr_M

Erfahrenes Mitglied
Hallo Zusammen,

Ich habe hier einen Tomcat 6 auf dem eine Webapplication läuft, diese ist mittels log4j so konfiguriert das die logs der Application in ein extra log file geschrieben werden.
Ein ConsoleAppender ist nicht konfiguriert.

Hier mal die Konfiguration, im log4j.properties
Code:
# Set root logger level to error
log4j.rootLogger=ERROR, File

###### File appender definition #######
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
log4j.appender.File.File=${catalina.home}/logs/myapplication.log
log4j.appender.File.Append=true
log4j.appender.File.DatePattern='.'yyyy-MM-dd
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p [%t] [%c]: - %m%n

UPDATE hier noch die web.xml (aber nur der Ausschnitt mit der log4j Konfiguration)
Code:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">
	
	...
	hier noch weitere Servlet und Error pages, die ich der Übersicht halbe mal weggelassen habe.
	...
	
	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>classpath:log4j.properties</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener>
</web-app>

In der catalina.out des Tomcats findet sich aber jetzt zu tausenden folgender Eintrag:

log4j:ERROR Attempted to append to closed appender named [ConsoleAppender]

Hat jemand ne Idee wo das her kommt und wie man das abstellen kann, ich will ja in die Console und damit in den ConsoleAppender keine Logausgaben schreiben.
System.out.println oder ähnliches sind in der Anwendung nicht enthalten, daher kann es also nicht kommen. Alle Ausgaben werden mit log4j gemacht als z.B. log.error("Ein Fehler ist aufgetreten");
Das sollte ja dann schön ordentlich in log-File landen oder?
 
Zuletzt bearbeitet:
Es laufen insgesammt 3 Weppaps auf dem Server jede mit einer eigenen log4j.properties.
Wenn das als mehrere log4j.properties im Classpath haben zählt, dann ist die Antwort auf deine Frage "JA". Zählt der Classpath denn nun eigentlich pro Anwendung oder haben quasi alle gemeinsam einen?

Habe das ganze jetzt auch mal lokal auf meinem Rechner probiert (lasse das ganze im STS laufen) und hier kommt der gleiche Fehler. Hier ist allerdings nur eine Anwendung und eine log4j auf dem Tomcat deployed.

Habe oben mal die web.xml noch hinzugefuegt.
 
Zuletzt bearbeitet:
Nach langen langem Suchen konnte ich den Fehler endlich finden, eine von mir eingebundene lib enthielt ihre eigene log4j.xml und war so konfiguriert auf einen ConsoleAppender zu schreiben der auch noch "ConsoleAppender" genannt war. Hab die Log4j dort angepasst und jetzt funktioniert es.
 
Zurück