Freemarker的确是不错又简洁的模板语言.
不过用在servlet中会产生非常非常多的错误日志,多得让人发晕.
对于ftl文件,错误是很明显的,只需要一点点的提示,说明错误在哪一行就行了,不需要把stack trace打来出.
如何去除呢?
首先,你必须重载FreemarkerServlet , 在它的init()函数中引入一个新的TemplateExceptionHandler,
this.getConfiguration().setTemplateExceptionHandler(new TemplateExceptionHandler() {
public void handleTemplateException(TemplateException te, Environment env, Writer out) throws TemplateException {
System.out.println("### [FTL]: " +te.getMessage());
}
});
然后,在log4j.properties中加入:
log4j.logger.freemarker=FATAL
ok,大功告成.
我们做了什么呢?
1. 重载了Freemarker默认的TemplateExceptionHandler,在处理日志时输出错误.
2. 禁用Freemarker原始的log4j日志方式(通过配置)