Struts2 禁用freemarker日志

Struts2 禁用freemarker日志,struts2,freemarker,Struts2,Freemarker,我使用的是Struts 2.0.11.2,我不知道我的应用程序最近发生了什么变化,我得到了大量的freemarker日志: DEBUG 13201 [freemark] (): template/simple/hidden.ftl[en,UTF-8,parsed] cached copy not yet stale; using cached. 我怎样才能关掉这些讨厌的日志?我知道freemarker.properties文件,但找不到如何从中指定日志级别。我在我的代码中尝试了黑客攻击

我使用的是Struts 2.0.11.2,我不知道我的应用程序最近发生了什么变化,我得到了大量的freemarker日志:

DEBUG   13201   [freemark] (): template/simple/hidden.ftl[en,UTF-8,parsed] cached copy not yet stale; using cached.
我怎样才能关掉这些讨厌的日志?我知道freemarker.properties文件,但找不到如何从中指定日志级别。我在我的代码中尝试了黑客攻击:

freemarker.log.Logger.selectLoggerLibrary(freemarker.log.Logger.LIBRARY_NONE);
对一些人来说,这是行不通的。我没有使用log4j,只是使用标准的java日志


顺便说一下:我不打算更改Struts版本或日志框架。

看看您在哪里配置java.util.logging(或者commons logging)。如果记录器说它记录来自FreeMaker的调试级别消息,FreeMarker将发送调试级别消息。这就像其他任何图书馆一样


禁用FreeMarker日志记录肯定不是一个好主意,因为您希望看到警告和错误。(之所以
LIBRARY\u NONE
不起作用,当然是因为您调用它太晚了,因为某些消息已经被记录,因此FreeMarker日志已经初始化。)

如果您使用的是Weblogic,您可以使用如下所述的日志过滤器禁用调试消息:。

我在JRE logging.properties文件本身中配置java.util.logging,默认情况下它不会记录信息下面的内容。不管怎么说,有些人还在看日志,有些人没有。我认为它在库之前记录了一些东西,只是在某些系统中没有。如果在类路径中有log4j1.x,FreeMarker将使用它,而不是
java.util.logging
,因此
logging.properties
就不会有问题。如果将
org.freemarker.loggerLibrary
系统属性设置为
JUL
修复了问题(需要freemarker 2.3.22),那么问题显然是:您也需要配置Log4j。或者更好的方法是,如果可以,迁移到SLF4J。。。如果FreeMarker 2.3.22在类路径中找到
log4j-over-slf4j
,它将使用slf4j而不是其他任何东西。