2011-10-17 4 views
6

Quando instatiating Velocity ottengo questo errore (pubblicato solo il "causato da" -messages):Registro errori nella velocità su sistemi Linux

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) 

Questo è il mio frammento di codice:

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

A prima il mio codice si presentava così:

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

sulla mia macchina windows funziona benissimo, ma su sistemi Linux (Ubuntu 10.04) non funziona. Questo post non mi aiuta molto, dal momento che non ho trovato alcun indizio su quale directory devo fornire permessi di scrittura.

ho scoperto, che il seguente codice sta lavorando anche a macchine Linux:

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

Non è una bella soluzione, dal momento che non potrei mai essere sicuri, se ho il permesso di scrittura sul mio contesto reale sentiero. Il migliore sarebbe, basta disattivare la registrazione di Velocity.

Quali diverse configurazioni di registrazione devo impostare? NullLogChute non funziona o lo uso in modo inappropriato?

Grazie in anticipo!

risposta

0

Ciao, il problema è protetto da copyright in scrittura. Infatti nel vostro stacktrace avete:

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

quindi è roba buona decidere in cui verrà scritto log velocità. E dici una buona parola, non puoi sapere se in produzione puoi scrivere su un percorso specifico. Quindi è meglio mettere quel percorso in un file di proprietà che sysadmin può modificare come vuole.

Quindi controlla questa risposta ad un altro post se può aiutarti.

Link here