Как отключить журналы скорости

Я пытаюсь отключить журналы Velocity, и единственный способ, который я нашел до сих пор с положительными результатами, - установить:

runtime.log.logsystem.class=org.apache.velocity.runtime.log.NullLogSystem

но внутри значений velocity.properties, которые находятся внутри velocity.jar.

Я использую скорость в контексте веб-приложения (tomcat). Есть ли способ отключить скорость (установив предыдущее свойство или что-то еще) НО, не изменяя JAR??

Невозможно изменить любой код

Заранее спасибо

Ответ 1

Обычно: просто добавьте следующую строку в свой velocity.properties:

runtime.log.logsystem.class=org.apache.velocity.runtime.log.NullLogChute

На ваш вопрос: Это зависит от того, как загружен двигатель скорости. Можно ли предоставить ему собственный файл velocity.properties?
Например, Solr VelocityResponseWriter имеет такое свойство, которое называется v.properties (или init.properties.file в текущих версиях).
Посмотрите, если метод org.apache.velocity.app.VelocityEngine.init(Properties) вызывается где-то в коде...

Ответ 2

Вот как вы можете настроить требуемый журнал в 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

IMHO INFO отлично с velocity, так как при запуске вы увидите некоторые полезные параметры конфигурации двигателя скорости, но во время шаблонов ничего не выходит из уровня INFO.

Ответ 3

Вы можете реализовать метод VelocityEngine engine() интерфейса VelocityBuilder, а затем указать файл, который вы хотите использовать, следующим образом:

    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