Отключить журналы 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, но я не нахожу, как указать уровни журнала оттуда. Я попробовал взломать свой код:

 freemarker.log.Logger.selectLoggerLibrary(freemarker.log.Logger.LIBRARY_NONE);
 

и для некоторых людей это не работает. Я не использую log4j, просто стандартное ведение журнала Java.

Кстати: Я не планирую менять версию Struts или структуру ведения журнала.

Ответ №1:

Если вы используете Weblogic, вы можете отключить отладочные сообщения с помощью LogFilter, как описано здесь: http://blog.technogemsinc.com/2012/09/weblogic-disabling-freemark-debug.html .

Ответ №2:

Посмотрите, где вы настраиваете java.util.logging (или, возможно, ведение журнала commons). Если регистратор сообщает, что он регистрирует сообщения уровня отладки от FreeMaker, FreeMarker отправит сообщения уровня отладки. Это так же, как с любой другой библиотекой.

Отключение ведения журнала FreeMarker, безусловно, не очень хорошая идея, так как вы хотите видеть предупреждения и ошибки. (Причины LIBRARY_NONE , по которым это не работает, безусловно, в том, что вы вызываете это слишком поздно, когда некоторые сообщения уже были зарегистрированы, и, следовательно, ведение журнала FreeMarker уже было инициализировано.)

Комментарии:

1. Я настраиваю java.util.logging в самом файле JRE logging.properties, по умолчанию он не регистрирует информацию ниже INFO. В любом случае, некоторые люди все еще видят журналы, некоторые нет. Я думаю, что он регистрирует что-то перед LIBRARY_NONE только в некоторых системах

2. Если у вас есть Log4j 1.x в вашем пути к классу, FreeMarker будет использовать это, а не java.util.logging , поэтому logging.properties не будет иметь значения. Если установка org.freemarker.loggerLibrary для системного свойства значения JUL устраняет проблему (требуется FreeMarker 2.3.22), то проблема, очевидно, заключается в следующем: вам также необходимо настроить Log4j. Или, что еще лучше, перейдите на SLF4J, если сможете … если FreeMarker 2.3.22 найдет log4j-over-slf4j в classpath, он будет использовать SLF4J вместо чего-либо еще.