2016-10-11 3 views
0

Ich habe eine Web-Anwendung, die wurde mit Log4j und Velocity v1.7So integrieren Sie Velocity mit Log4j2?

Dies ist, wie ich Log4j und Geschwindigkeit 1,7

private static VelocityEngine velocityEngine = new VelocityEngine(); 

static { 
    velocityEngine.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS, 
      "org.apache.velocity.runtime.log.Log4JLogChute"); 
    velocityEngine.setProperty("runtime.log.logsystem.log4j.LOGGER", 
      VelocityUtil.class.getName()); 
    velocityEngine.init(); 
} 

Aber nach der Aktualisierung der Anwendung auf LOG4j2 integriert hatte, ich folgende Ausnahme bekommen

...
java.io.FileNotFoundException: velocity.log (Permission denied) 

Dies ist die gleiche Ausnahme, die ich machte die VelocityEngine Eigentum im statischen Block oben konfigurierte, wenn ich LOG4J wurde mit.

Offenbar gibt es keine Entsprechung von Log4JLogChute, die mit Log4j2 kompatibel ist.

Wer weiß, wie die Kompatibilität zwischen Log4j2 und Geschwindigkeit zu erreichen.

Antwort

0

Wenn Sie das log4j 1.x-Glas durch das log4j-1.2-api-Glas ersetzen, sollte es funktionieren.

+0

Ich habe log4j 1.x nicht überall in meinem Projekt. Außerdem habe ich log4j-1.2-api Version 2.7 in meiner Anwendung hinzugefügt. Ich habe angefangen, Verknüpfungsfehler zu empfangen. – DolphinJava

+0

Sie haben es vielleicht nicht angegeben, aber Velocity verwendet es. Sie müssen diese Abhängigkeit erfüllen. Wenn Sie Maven verwenden, können Sie "mvn dependency: tree" ausführen und sehen, ob das log4j 1.x jar vorhanden ist. Wenn dies der Fall ist, müssen Sie es aus der Abhängigkeit ausschließen, durch die es eingefügt wird. Wenn es nicht dort ist, dann fügen Sie einfach das log4j-1.2-API-Glas hinzu. – rgoers

+0

Hier sind die Ausnahmedetails: Lader-Constraint-Verletzung: beim Auflösen der Methode "org.apache.log4j.RollingFileAppender. (Lorg/apache/log4j/Layout; Ljava/lang/String; Z) V" der Klassenlader (Instanz von org/Apache/catalina/loader/WebappClassLoader) der aktuellen Klasse, org/Apache/Geschwindigkeit/runtime/log/Log4JLogChute und den Klassenlader (Instanz von org/Apache/catalina/loader/StandardClassLoader) für die Definition der Klasse Methode, org/apache/log4j/RollingFileAppender, haben unterschiedliche Klassenobjekte für den Typ org/apache/log4j/Layout in der Signatur verwendet – DolphinJava