我一直在尝试禁用 Velocity 日志,到目前为止,我发现的唯一获得积极结果的方法是设置:
runtime.log.logsystem.class=org.apache.velocity.runtime.log.NullLogSystem
但在velocity.jar 中的velocity.properties 中。
我在 Web 应用程序(tomcat)上下文中使用速度。有什么方法可以禁用速度(通过设置先前的属性或其他)但不修改 JAR?
无法修改任何代码
提前致谢
一般来说:只需将以下行添加到您的velocity.properties
:
runtime.log.logsystem.class=org.apache.velocity.runtime.log.NullLogChute
对于您的问题:这取决于速度引擎的加载方式。是否可以给它一个自定义velocity.properties
文件?
例如 SolrVelocityResponseWriter
有这样的属性称为v.properties
(或init.properties.file
在当前版本中)。
看,如果该方法org.apache.velocity.app.VelocityEngine.init(Properties)
在代码中的某处被调用......
这是您可以配置所需登录的方式velocity
:
//java configuration
VelocityEngine ve = new VelocityEngine();
ve.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS, "org.apache.velocity.runtime.log.Log4JLogChute" );
ve.setProperty("runtime.log.logsystem.log4j.logger","velocity");
//log4j properties
log4j.category.velocity=WARN
恕我直言INFO
,velocity
在启动时你会注意到一些有用的速度引擎配置细节,但在模板过程中没有任何具体的内容来自INFO
关卡。
您可以实现 VelocityBuilder 接口的 VelocityEngine engine() 方法,然后指定要使用的文件,如下所示:
public VelocityEngine engine() {
if(engine == null) {
engine = new VelocityEngine();
Properties properties = new Properties();
InputStream in = null;
try {
//here is where you specify the filename "/WEB-INF/velocity.properties"
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;
}
然后在你的 velocity.properties 文件中:
resource.loader = framework
framework.resource.loader.description = Framework Templates Resource Loader
framework.resource.loader.class = applica.framework.library.velocity.WEBINFResourceLoader
webapp.resource.loader.class = org.apache.velocity.tools.view.servlet.WebappLoader
webapp.resource.loader.path =
runtime.log.logsystem.class=org.apache.velocity.runtime.log.NullLogSystem
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
VelocityEngine velocityEngine = new VelocityEngine();
velocityEngine.setProperty("runtime.log.logsystem.class", NullLogChute.class.getName());
velocityEngine.init();