2009-05-11 25 views
16

Tôi đã xây dựng một ứng dụng web hoạt động hoàn toàn tốt trong localhost (tomcat) của tôi. Nhưng khi tôi cố gắng triển khai, vận tốc bị treo trong init(), để lại cho tôi dấu vết ngăn xếp lạ ở đây (xin lỗi cho kích thước):Lỗi trong vận tốc và 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 


Có ai biết cách giải quyết không? Hoặc ít nhất là hiểu được lỗi? Tôi đã làm một số googling nhưng không có manh mối .. chỉ page này phải đối mặt với cùng một vấn đề nhưng không có giải pháp ..

Trả lời

9

Tôi nghĩ rằng dòng này có câu trả lời. Có vẻ như đã xảy ra sự cố khi tạo tệp velocity.log. Tệp cấu hình của bạn trông như thế nào?

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

Chính xác là, tôi sẽ đặt công việc xung quanh khi tôi có thời gian. –

+0

Tôi có cùng một vấn đề. Nó đang cố gắng tạo tập tin velocity.log ở đâu? Thư mục gì? –

+0

Tôi cũng gặp vấn đề này. Của tôi là bởi vì tập tin được sở hữu bởi root thay vì người dùng máy chủ web. Tôi đã làm cd /; find -name "velocity.log". Sau đó, một khi tôi tìm thấy nó: chown : vận tốc.đăng nhập –

4

Nó xuất hiện quá trình cố gắng mở các tập tin đăng nhập không được phép làm như vậy:

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

Vận tốc cố gắng đặt logfile vào thư mục Tomcat được bắt đầu và tôi tin thực sự là /.

Bạn có thể buộc Velocity để đăng nhập vào nhật ký chuẩn của Tomcat bằng cách thêm các dòng để velocity.properties của bạn:

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

Các velocity.properties nên đi vào /WEB-INF/velocity.properties nhưng bạn có thể ghi đè lên rằng trong định nghĩa servlet của bạn trong web.xml.

Nếu bạn đang initialising Velocity bằng tài sản và không phải là 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); 

đọc thêm ở đây:

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

và ở đây:

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

+0

thay thế thuộc tính mới() -> đạo cụ trong mã của bạn –

+1

gần đây, SimpleLog4JLogSystem được đề nghị dường như không còn được dùng nữa, vì vậy lớp [Log4JLogChute] (http://velocity.apache.org/engine/devel/apidocs/org/apache /velocity/runtime/log/Log4JLogChute.html) nên được sử dụng thay thế. Ngoài ra, nếu bạn không muốn liên kết trực tiếp ứng dụng của mình với log4j, [Slf4jLogChute] (http://velocity.apache.org/engine/devel/apidocs/org/apache/velocity/slf4j/Slf4jLogChute.html) có thể là thay thế hợp lý. – martin

0

Tôi cũng gặp vấn đề tương tự nhưng tôi có thể giải quyết việc này ghi đè tệp nhật ký mặc định vào tệp nhật ký tùy chỉnh. Chỉ cần thêm 3 dòng mã này vào phương thức mà bạn đang gọi hàm đánh giá.

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

Đây là một cách để giải quyết tức là, không sử dụng tệp thuộc tính.

0

Tôi đã có chính xác cùng một vấn đề với mã của tôi và sau nhiều giờ googling cho điều đó, tôi chỉ quyết định thêm một số thư viện Velocity khác vào dự án của tôi. Dự án của tôi chỉ có tệp jar tốc độ apache, sau đó từ here, tôi cũng thêm Velocity-Dep vào dự án Maven của tôi và Yesssssssssss! CHIẾN THẮNG!

Các vấn đề liên quan