2009-05-11 9 views
16

Ich baute eine Webapp, die perfekt funktioniert in meinem localhost (Tomcat). Aber als ich versuchte, zu implementieren, Geschwindigkeit stürzt in init(), mich mit diesen seltsamen Stack Spuren zu hinterlassen hier (sorry für die Größe):Fehler in der Geschwindigkeit und log4J

 

ERROR [main] (VelocityConfigurator.java:62) - Error initializing Velocity! 
org.apache.velocity.exception.VelocityException: Failed to initialize an instance of org.apache.velocity.runtime.log.Log4JLogChute with the current runtime configuration. 
    at org.apache.velocity.runtime.log.LogManager.createLogChute(LogManager.java:206) 
    at org.apache.velocity.runtime.log.LogManager.updateLog(LogManager.java:255) 
    at org.apache.velocity.runtime.RuntimeInstance.initializeLog(RuntimeInstance.java:795) 
    at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:250) 
    at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:589) 
    at org.apache.velocity.runtime.RuntimeSingleton.init(RuntimeSingleton.java:229) 
    at org.apache.velocity.app.Velocity.init(Velocity.java:107) 
    at com.webcodei.velociraptor.velocity.VelocityConfigurator.initVelocity(VelocityConfigurator.java:57) 
    at com.webcodei.velociraptor.velocity.VelocityConfigurator.configure(VelocityConfigurator.java:42) 
    at com.webcodei.velociraptor.VelociListener.contextInitialized(VelociListener.java:26) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4336) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:761) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:741) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525) 
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626) 
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553) 
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488) 
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138) 
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1023) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1015) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:448) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:552) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 
Caused by: java.lang.RuntimeException: Error configuring Log4JLogChute : 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at org.apache.velocity.util.ExceptionUtils.createWithCause(ExceptionUtils.java:67) 
    at org.apache.velocity.util.ExceptionUtils.createRuntimeException(ExceptionUtils.java:45) 
    at org.apache.velocity.runtime.log.Log4JLogChute.initAppender(Log4JLogChute.java:133) 
    at org.apache.velocity.runtime.log.Log4JLogChute.init(Log4JLogChute.java:85) 
    at org.apache.velocity.runtime.log.LogManager.createLogChute(LogManager.java:157) 
    ... 33 more 
Caused by: java.io.FileNotFoundException: velocity.log (Permission denied) 
    at java.io.FileOutputStream.openAppend(Native Method) 
    at java.io.FileOutputStream.(FileOutputStream.java:177) 
    at java.io.FileOutputStream.(FileOutputStream.java:102) 
    at org.apache.log4j.FileAppender.setFile(FileAppender.java:290) 
    at org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:194) 
    at org.apache.log4j.FileAppender.(FileAppender.java:109) 
    at org.apache.log4j.RollingFileAppender.(RollingFileAppender.java:72) 
    at org.apache.velocity.runtime.log.Log4JLogChute.initAppender(Log4JLogChute.java:118) 
    ... 35 more 
ERROR [main] (VelocityConfigurator.java:63) - java.lang.RuntimeException: Error configuring Log4JLogChute : 
org.apache.velocity.exception.VelocityException: Failed to initialize an instance of org.apache.velocity.runtime.log.Log4JLogChute with the current runtime configuration. 
    at org.apache.velocity.runtime.log.LogManager.createLogChute(LogManager.java:206) 
    at org.apache.velocity.runtime.log.LogManager.updateLog(LogManager.java:255) 
    at org.apache.velocity.runtime.RuntimeInstance.initializeLog(RuntimeInstance.java:795) 
    at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:250) 
    at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:589) 
    at org.apache.velocity.runtime.RuntimeSingleton.init(RuntimeSingleton.java:229) 
    at org.apache.velocity.app.Velocity.init(Velocity.java:107) 
    at com.webcodei.velociraptor.velocity.VelocityConfigurator.initVelocity(VelocityConfigurator.java:57) 
    at com.webcodei.velociraptor.velocity.VelocityConfigurator.configure(VelocityConfigurator.java:42) 
    at com.webcodei.velociraptor.VelociListener.contextInitialized(VelociListener.java:26) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4336) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:761) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:741) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525) 
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626) 
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553) 
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488) 
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138) 
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1023) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1015) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:448) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:552) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 
Caused by: java.lang.RuntimeException: Error configuring Log4JLogChute : 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at org.apache.velocity.util.ExceptionUtils.createWithCause(ExceptionUtils.java:67) 
    at org.apache.velocity.util.ExceptionUtils.createRuntimeException(ExceptionUtils.java:45) 
    at org.apache.velocity.runtime.log.Log4JLogChute.initAppender(Log4JLogChute.java:133) 
    at org.apache.velocity.runtime.log.Log4JLogChute.init(Log4JLogChute.java:85) 
    at org.apache.velocity.runtime.log.LogManager.createLogChute(LogManager.java:157) 
    ... 33 more 
Caused by: java.io.FileNotFoundException: velocity.log (Permission denied) 
    at java.io.FileOutputStream.openAppend(Native Method) 
    at java.io.FileOutputStream.(FileOutputStream.java:177) 
    at java.io.FileOutputStream.(FileOutputStream.java:102) 
    at org.apache.log4j.FileAppender.setFile(FileAppender.java:290) 
    at org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:194) 
    at org.apache.log4j.FileAppender.(FileAppender.java:109) 
    at org.apache.log4j.RollingFileAppender.(RollingFileAppender.java:72) 
    at org.apache.velocity.runtime.log.Log4JLogChute.initAppender(Log4JLogChute.java:118) 
    ... 35 more 
ERROR [main] (VelocityConfigurator.java:64) - Failed to initialize an instance of org.apache.velocity.runtime.log.Log4JLogChute with the current runtime configuration. 
org.apache.velocity.exception.VelocityException: Failed to initialize an instance of org.apache.velocity.runtime.log.Log4JLogChute with the current runtime configuration. 
    at org.apache.velocity.runtime.log.LogManager.createLogChute(LogManager.java:206) 
    at org.apache.velocity.runtime.log.LogManager.updateLog(LogManager.java:255) 
    at org.apache.velocity.runtime.RuntimeInstance.initializeLog(RuntimeInstance.java:795) 
    at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:250) 
    at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:589) 
    at org.apache.velocity.runtime.RuntimeSingleton.init(RuntimeSingleton.java:229) 
    at org.apache.velocity.app.Velocity.init(Velocity.java:107) 
    at com.webcodei.velociraptor.velocity.VelocityConfigurator.initVelocity(VelocityConfigurator.java:57) 
    at com.webcodei.velociraptor.velocity.VelocityConfigurator.configure(VelocityConfigurator.java:42) 
    at com.webcodei.velociraptor.VelociListener.contextInitialized(VelociListener.java:26) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4336) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:761) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:741) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525) 
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626) 
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553) 
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488) 
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138) 
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1023) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1015) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:448) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:552) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 
Caused by: java.lang.RuntimeException: Error configuring Log4JLogChute : 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at org.apache.velocity.util.ExceptionUtils.createWithCause(ExceptionUtils.java:67) 
    at org.apache.velocity.util.ExceptionUtils.createRuntimeException(ExceptionUtils.java:45) 
    at org.apache.velocity.runtime.log.Log4JLogChute.initAppender(Log4JLogChute.java:133) 
    at org.apache.velocity.runtime.log.Log4JLogChute.init(Log4JLogChute.java:85) 
    at org.apache.velocity.runtime.log.LogManager.createLogChute(LogManager.java:157) 
    ... 33 more 
Caused by: java.io.FileNotFoundException: velocity.log (Permission denied) 
    at java.io.FileOutputStream.openAppend(Native Method) 
    at java.io.FileOutputStream.(FileOutputStream.java:177) 
    at java.io.FileOutputStream.(FileOutputStream.java:102) 
    at org.apache.log4j.FileAppender.setFile(FileAppender.java:290) 
    at org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:194) 
    at org.apache.log4j.FileAppender.(FileAppender.java:109) 
    at org.apache.log4j.RollingFileAppender.(RollingFileAppender.java:72) 
    at org.apache.velocity.runtime.log.Log4JLogChute.initAppender(Log4JLogChute.java:118) 
    ... 35 more 


Hat jemand die Abhilfe weiß? Oder zumindest den Fehler verstanden? Ich habe einige googeln getan, aber keine Hinweise .. nur dieses page das gleiche Problem, aber keine Lösung mit Blick auf ..

Antwort

9

Ich denke, diese Zeile hat die Antwort. Offenbar gibt es ein Problem beim Erstellen der Datei "velocity.log". Wie sieht Ihre Konfigurationsdatei aus?

+0

Es war genau das, ich werde die Arbeit stellen, wenn ich Zeit habe. –

+0

Ich habe das gleiche Problem. Wo wird versucht, die Datei "velocity.log" zu erstellen? Welches Verzeichnis? –

+0

Ich hatte dieses Problem auch. Meines war, weil die Datei von root anstelle von Webserverbenutzer gehört wurde. Ich habe am Ende cd /; find -name "velocity.log". Dann, sobald ich es gefunden habe: chown : Geschwindigkeit.Log –

4

es den Prozess um die Protokolldatei zu öffnen versucht, erscheint nicht die Berechtigung, dies zu tun:

Caused by: java.io.FileNotFoundException: velocity.log (Permission denied) 
34

Velocity versucht, die Logdatei in das Verzeichnis zu legen, aus dem Tomcat gestartet wurde, und ich glaube, das ist tatsächlich /.

Sie Geschwindigkeit zwingen kann durch das Hinzufügen dieser Zeilen zu Ihren velocity.properties auf Tomcat-Standardprotokoll zu protokollieren:

runtime.log.logsystem.class=org.apache.velocity.runtime.log.SimpleLog4JLogSystem 
runtime.log.logsystem.log4j.category=velocity 
runtime.log.logsystem.log4j.logger=velocity 

Die velocity.properties in /WEB-INF/velocity.properties gehen sollte, aber Sie können außer Kraft setzen das in dir servlet definition in web.xml.

Wenn Sie die Initialisierung Geschwindigkeit von Eigenschaften und nicht die velocity.properties:

VelocityEngine engine = new VelocityEngine(); 

Properties props = new Properties(); 
props.put("runtime.log.logsystem.class", "org.apache.velocity.runtime.log.SimpleLog4JLogSystem"); 
props.put("runtime.log.logsystem.log4j.category", "velocity"); 
props.put("runtime.log.logsystem.log4j.logger", "velocity"); 

engine.init(props); 

Lesen Sie mehr hier:

http://velocity.apache.org/engine/devel/developer-guide.html#usinglog4jwithexistinglogger

und hier:

http://minaret.biz/tips/tomcatLogging.html#velocity

+0

ersetzen neue Eigenschaften() -> Requisiten in Ihrem Code –

+1

vor kurzem scheint das empfohlene SimpleLog4JLogSystem veraltet, so dass die Klasse [Log4JLogChute] (http://velocity.apache.org/engine/devel/apidocs/org/apache /velocity/runtime/log/Log4JLogChute.html) sollte stattdessen verwendet werden. Wenn Sie Ihre Anwendung nicht direkt an log4j binden möchten, kann auch [Slf4jLogChute] (http://velocity.apache.org/engine/devel/apidocs/org/apache/velocity/slf4j/Slf4jLogChute.html) eine sein vernünftige Alternative. – martin

1

Ich stellte mich der sa Ich habe ein Problem und habe einen beschreibenden Blog mit den möglichen Ursachen und Lösungen geschrieben. Hier ist der Link.

0

Ich hatte auch das gleiche Problem, aber ich war in der Lage, diese überschreiben die Standard-Log-Datei auf benutzerdefinierte Protokolldatei zu lösen. Fügen Sie einfach diese drei Codezeilen in der Methode hinzu, in der Sie evaluate Function aufrufen.

Velocity.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS,"org.apache.velocity.runtime.log.Log4JLogChute"); 

Velocity.setProperty("runtime.log.logsystem.log4j.logger","com.mindtree.igg.website.email.TemplateMergeUtilVelocityImpl"); 

VelocityContext velocityContext = new VelocityContext(parameters); 

Dies ist eine Möglichkeit, es zu lösen, dh ohne Verwendung der Eigenschaftendatei.

0

Ich hatte genau das gleiche Problem mit meinem Code und nach stundenlangem Googeln habe ich mich entschieden, meinem Projekt noch weitere Velocity-Bibliotheken hinzuzufügen. Mein Projekt hatte nur die Apache-Velocity-JAR-Datei, dann von here, fügte ich auch Velocity-Dep zu meinem Maven-Projekt und Yesssssssssss hinzu! SIEG!