在Linux系统上记录速度错误

时间:2011-10-17 11:20:00

标签: linux logging velocity

当实施Velocity时,我收到此错误(仅发布“由”引起的消息):

java.lang.RuntimeException: Velocity could not be initialized!
Caused by: org.apache.velocity.exception.VelocityException: Error initializing log: Failed to initialize an instance of org.apache.velocity.runtime.log.Log4JLogChute with the current runtime configuration.
Caused by: org.apache.velocity.exception.VelocityException: Failed to initialize an instance of org.apache.velocity.runtime.log.Log4JLogChute with the current runtime configuration.
Caused by: java.lang.RuntimeException: Error configuring Log4JLogChute : 
Caused by: java.io.FileNotFoundException: velocity.log (Permission denied)

这是我的代码段:

    VelocityEngine ve = new VelocityEngine();
    ve.evaluate(context, writer, "org.apache.velocity.runtime.log.NullLogChute", this.templateString);

起初我的代码看起来像这样:

runtimeServices = RuntimeSingleton.getRuntimeServices();
node = runtimeServices.parse(reader, templateName);

在我的Windows机器上它工作正常,但在Linux系统(ubuntu 10.04)上它不起作用。这个post对我没有多大帮助,因为我没有找到任何线索,我必须给出写权限。

我发现,以下代码也适用于Linux机器:

String logPath = request.getRealPath("/velocity.log");
RuntimeSingleton.setProperty( RuntimeConstants.RUNTIME_LOG, logPath );
runtimeServices = RuntimeSingleton.getRuntimeServices();
node = runtimeServices.parse(reader, templateName);

这不是一个非常好的解决方案,因为我无法确定,如果我对我的真实上下文路径有写权限。最好的是,只关闭Velocity的记录。

我必须设置哪些不同的日志配置? NullLogChute是不起作用还是使用不恰当?

提前致谢!

1 个答案:

答案 0 :(得分:0)

嗨,问题在于写入权限受保护的fs。 在你的堆栈跟踪中你有:

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

因此,确定写入速度记录的位置是好事。 你说一个好词,你不知道在生产中你是否可以写一个特定的路径。 因此,最好将该路径放在sysadmin可以根据需要修改的属性文件中。

如果可以帮助你,请查看我对另一篇文章的回答。

链接here