2009-05-11 7 views
16

Creé una aplicación web que funciona perfectamente bien en mi servidor local (tomcat). Pero cuando traté de implementar, los accidentes de velocidad en init(), y me dejó con este seguimiento de la pila extraña aquí (lo siento por el tamaño):Error en la velocidad y 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 


¿Alguien sabe la solución? ¿O al menos entendiste el error? He hecho algunas google, pero no hay pistas .. solo que esta page enfrenta el mismo problema pero ninguna solución ..

Respuesta

9

Creo que esta línea tiene la respuesta. Parece que hay un problema al crear el archivo velocity.log. ¿Cómo se ve tu archivo de configuración?

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

Fue exactamente eso, pondré el trabajo cuando tenga tiempo. –

+0

Tengo el mismo problema. ¿Dónde está tratando de crear el archivo velocity.log? ¿Qué directorio? –

+0

Tuve este problema también. La mía era porque el archivo era propiedad de root en lugar del usuario del servidor web. Terminé haciendo cd /; find -name "velocity.log". Entonces una vez que lo encontré: chown : velocidad.registro –

4

Al parecer, el proceso de intentar abrir el archivo de registro no tiene permiso para hacerlo:

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

Velocity intenta poner el archivo de registro en el directorio desde el que se inició Tomcat, y creo que en realidad es /.

Puede forzar la velocidad se pueden registrar en registro estándar de Tomcat añadiendo estas líneas a su velocity.properties:

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

Los velocity.properties deben entrar en /WEB-INF/velocity.properties pero se puede anular eso en tu definición de servlet en web.xml.

Si está inicialización de velocidad por las propiedades y no los 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); 

leer más aquí:

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

y aquí:

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

+0

reemplazar nuevas propiedades() -> accesorios en su código –

+1

recientemente, el sistema SimpleLog4JLog recomendado parece estar en desuso, por lo que la clase [Log4JLogChute] (http://velocity.apache.org/engine/devel/apidocs/org/apache /velocity/runtime/log/Log4JLogChute.html) se debe utilizar en su lugar. Además, si no desea vincular su aplicación a log4j directamente, [Slf4jLogChute] (http://velocity.apache.org/engine/devel/apidocs/org/apache/velocity/slf4j/Slf4jLogChute.html) podría ser un alternativa razonable. – martin

0

Yo también tuve el mismo problema, pero pude resolver esto anulando el archivo de registro predeterminado en el archivo de registro personalizado. Simplemente agregue estas 3 líneas de código en el método al que está llamando evaluar Función.

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

Esta es una manera de resolverlo, es decir, sin utilizar el archivo de propiedades.

0

He tenido exactamente el mismo problema con mi código y después de horas buscando en Google para eso, decidí agregar algunas otras bibliotecas de Velocity a mi proyecto. Mi proyecto solo tenía el archivo jar apache-velocity, luego de here, ¡también agregué Velocity-Dep a mi proyecto Maven y Yesssssssssss! ¡VICTORIA!