#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 вместо чего-либо еще.