Зарегистрируйте ошибку в скорости в системах Linux - PullRequest
6 голосов
/ 17 октября 2011

При установке 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) это не работает. Эта запись мне мало помогает, так как я не нашел никаких подсказок, какой каталог я должен дать разрешения на запись.

Я обнаружил, что следующий код работает и на машинах 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 голосов
/ 20 ноября 2014

Привет, проблема на fs защищена правами на запись. Infact в вашей трассировке стека у вас есть:

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

Так что неплохо решить, где будет записываться лог скорости. И вы говорите хорошее слово, вы не можете знать, если в производстве вы можете написать по определенному пути. Так что лучше поместить этот путь в файл свойств, который sysadmin может изменить по своему усмотрению.

Так что проверьте этот мой ответ на другой пост, если вам может помочь.

Ссылка здесь

...