2011-06-02 18 views
5

Parece bastante sencillo. Documentación en http://velocity.apache.org/engine/devel/developer-guide.html#Configuring_Logging dice establecer la propiedad runtime.log. Esto es lo que obtuve para todas mis propiedades.Cambiar la ubicación del archivo Velocity.Log

velocityEngine.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, templatesPath); 

      velocityEngine.setProperty("runtime.log", "/path/to/my/file/velocity.log"); 
      velocityEngine.setProperty("resource.loader", "string"); 
      velocityEngine.setProperty("string.resource.loader.class", "org.apache.velocity.runtime.resource.loader.StringResourceLoader"); 
      velocityEngine.setProperty("string.resource.loader.repository.class", "org.apache.velocity.runtime.resource.util.StringResourceRepositoryImpl"); 

Al no encontrar ningún archivo de registro donde me dijeron que para colocarlo en su lugar y la búsqueda de los nuevos errores colocados en edad (carpeta de inicialización) ubicación. ¿Algunas ideas? : D

+0

Eso me parece correcto. ¿La ubicación tiene los permisos adecuados? como alternativa, también puede usar log4j y combinarlo en el registro de la aplicación habitual. –

Respuesta

1

tuve un problema similar al configurar en el tiempo de ejecución algunas opciones. Descubrí esos problemas con un VelocityBuilder personalizado y un archivo externo de velocidad.propiedades donde puede poner todas las propiedades de tiempo de ejecución. Aquí está el código:

public class BaseVelocityBuilder implements VelocityBuilder { 
    private VelocityEngine engine; 

    private Log logger = LogFactory.getLog(getClass()); 

    @Autowired 
    private WebApplicationContext webApplicationContext; 

    public VelocityEngine engine() { 
     if(engine == null) { 
      engine = new VelocityEngine(); 

      Properties properties = new Properties(); 
      InputStream in = null; 
      try { 
       in = webApplicationContext.getServletContext().getResourceAsStream("/WEB-INF/velocity.properties"); 
       properties.load(in); 
       engine.init(properties); 
      } catch (IOException e) { 
       e.printStackTrace(); 
       logger.error("Error loading velocity engine properties"); 
       throw new ProgramException("Cannot load velocity engine properties"); 
      } 

      IOUtils.closeQuietly(in); 
     } 

     return engine; 
    } 
} 

Ver esta línea:

  in = webApplicationContext.getServletContext().getResourceAsStream("/WEB-INF/velocity.properties"); 
      properties.load(in); 
      engine.init(properties); 

así que tengo un archivo en velocity.properties/WEB-INF donde pongo alguna configuración:

resource.loader = webinf, class 

webinf.resource.loader.description = Framework Templates Resource Loader 
webinf.resource.loader.class = applica.framework.library.velocity.WEBINFResourceLoader 

webapp.resource.loader.class = org.apache.velocity.tools.view.servlet.WebappLoader 
webapp.resource.loader.path = 

file.resource.loader.description = Velocity File Resource Loader 
file.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader 
file.resource.loader.path = 

class.resource.loader.description = Velocity Classpath Resource Loader 
class.resource.loader.class = org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader 
runtime.log='/pathYouWant/velocity.log' 

Al final en su application.xml:

<bean class="applica.framework.library.velocity.BaseVelocityBuilder" /> 

De esta manera puede tener, por ejemplo, diferentes registros de archivos para diferentes aplicaciones y cuando se produce la guerra en producción, el sysadm puede cambiar las propiedades debido a la configuración de env del servidor de producción.

Cuestiones relacionadas