2012-09-13 27 views
9

Tengo una clase java que crea un cargador de clases personalizado basado en el cargador de clase javassist en el inicio y luego ejecuta la clase de programa real. Estoy recibiendo el siguiente error:Configurar org.apache.log4j.ConsoleAppender con classloader personalizado

log4j:ERROR A "org.apache.log4j.ConsoleAppender" object is not assignable to a   
"org.apache.log4j.Appender" variable. 
log4j:ERROR The class "org.apache.log4j.Appender" was loaded by 
log4j:ERROR [[email protected]] whereas object of type 
log4j:ERROR "org.apache.log4j.ConsoleAppender" was loaded by 
[[email protected]]. 
log4j:ERROR Could not instantiate appender named "stdout". 

El problema está relacionado con el hecho de que un objeto es creado por el cargador de clases original, mientras que la otra es creado por la costumbre uno.
¿Hay alguna manera de resolver este error?

Gracias de antemano,
Avner

Respuesta

16

Por favor, intente configurar de -Dlog4j.ignoreTCL = true, espero que ayude. un problema de simular about log4j

+1

funcionó como un encanto ;-) Gracias –

0

Añadir log4j.ignoreTCL en experta en la configuración del complemento Tomcat como se muestra a continuación en

<plugin> 
    <groupId>org.apache.tomcat.maven</groupId> 
    <artifactId>tomcat7-maven-plugin</artifactId> 
    <version>2.1</version> 
    <configuration> 
     <port>${local.server.port}</port> 
     <update>true</update> 
     <systemProperties> 
     <log4j.configurationFile>${user.dir}\conf\log4j2.xml</log4j.configurationFile> 
     <log4j.ignoreTCL>true</log4j.ignoreTCL> 
     <java.util.logging.manager>org.apache.logging.log4j.jul.LogManager</java.util.logging.manager> 
     </systemProperties> 
     <contextReloadable>true</contextReloadable> 
    </configuration> 
</plugin> 
Cuestiones relacionadas