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.
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. –