2009-05-11 16 views
16

Ho costruito una webapp che funziona perfettamente nel mio localhost (tomcat). Ma quando ho cercato di distribuire, crash di velocità in init(), lasciandomi con questa strana traccia dello stack qui (scusate per la dimensione):Errore in velocity e 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 


Qualcuno conosce la soluzione? O almeno capito l'errore? Ho fatto un po 'googling, ma nessun indizio .. solo che questa page di fronte lo stesso problema, ma nessuna soluzione ..

risposta

9

Penso che questa linea abbia la risposta. Sembra che ci sia un problema nel creare il file velocity.log. Come appare il tuo file di configurazione?

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

Era esattamente così, metterò il lavoro intorno quando avrò tempo. –

+0

Ho lo stesso problema. Dove sta cercando di creare il file velocity.log? Quale directory? –

+0

Ho avuto anche questo problema. Il mio era perché il file era di proprietà di root anziché utente del server web. Ho finito per fare cd /; find -name "velocity.log". Poi una volta l'ho trovato: chown : velocità.log –

4

Sembra il processo tenta di aprire il file di registro non ha il permesso di farlo:

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

Velocity cerca di mettere il file di log nella directory di Tomcat era stato avviato, e credo che in realtà è /.

È possibile forzare Velocity per accedere ai log standard di Tomcat aggiungendo queste righe al tuo velocity.properties:

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

I velocity.properties dovrebbe andare in /WEB-INF/velocity.properties ma è possibile ignorare quella nella tua definizione di servlet in web.xml.

Se stai Inizializzando Velocity da proprietà e non i 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); 

Read more here:

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

e qui:

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

+0

sostituire nuove proprietà() -> oggetti di scena nel codice –

+1

di recente, il SimpleLog4JLogSystem consigliato sembra essere deprecato, quindi la classe [Log4JLogChute] (http://velocity.apache.org/engine/devel/apidocs/org/apache /velocity/runtime/log/Log4JLogChute.html) dovrebbe invece essere usato. Inoltre, se non vuoi collegare direttamente la tua applicazione a log4j, [Slf4jLogChute] (http://velocity.apache.org/engine/devel/apidocs/org/apache/velocity/slf4j/Slf4jLogChute.html) potrebbe essere un alternativa ragionevole. – martin

0

Anche io ho avuto lo stesso problema, ma sono stato in grado di risolvere questo annullando il file di registro predefinito in un file di registro personalizzato. Basta aggiungere queste 3 righe di codice nel metodo in cui stai chiamando valutare Function.

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); 

questo è un modo di risolverlo cioè, senza l'utilizzo di file di proprietà.

0

Ho avuto esattamente lo stesso problema con il mio codice e dopo ore di googling per questo, ho appena deciso di aggiungere altre librerie Velocity al mio progetto. Il mio progetto aveva solo il file jar apache-velocity, quindi da here, ho anche aggiunto Velocity-Dep al mio progetto Maven e Yesssssssssss! VITTORIA!