2016-10-11 9 views
0

У меня есть веб-приложение, которое использовал Log4j и Velocity v1.7Как интегрировать скорость с Log4j2?

Это, как я интегрировал Log4j и Velocity 1.7

private static VelocityEngine velocityEngine = new VelocityEngine(); 

static { 
    velocityEngine.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS, 
      "org.apache.velocity.runtime.log.Log4JLogChute"); 
    velocityEngine.setProperty("runtime.log.logsystem.log4j.LOGGER", 
      VelocityUtil.class.getName()); 
    velocityEngine.init(); 
} 

Но после обновления приложения к LOG4j2, я получаю следующее исключение ...

java.io.FileNotFoundException: velocity.log (Permission denied) 

Это то же самое исключение, которое заставило меня настроено свойство VelocityEngine в статическом блоке выше, когда я использую lOG4J.

По-видимому, нет эквивалента Log4JLogChute, который совместим с Log4j2.

Кто-нибудь знает, как добиться совместимости между Log4j2 и Velocity.

ответ

0

Если вы замените банку log4j 1.x логом log4j-1.2-api, он должен начать работать.

+0

У меня нет log4j 1.x в любом месте моего проекта. Кроме того, я добавил log4j-1.2-api версии 2.7 в свое приложение. Я начал получать ошибки связи. – DolphinJava

+0

Возможно, вы не указали это, но Velocity использует его. Вы должны удовлетворить эту зависимость. Если вы используете Maven, вы можете запустить «mvn dependency: tree» и посмотреть, присутствует ли банкер log4j 1.x. Если это так, вы должны исключить его из зависимости, которая вызывает его включение. Если его там нет, просто добавьте банку log4j-1.2-api. – rgoers

+0

Вот сведения об исключении: нарушение ограничения загрузчика: при разрешении метода «org.apache.log4j.RollingFileAppender. (Lorg/apache/log4j/Layout; Ljava/lang/String; Z) V» загрузчик классов (экземпляр org/apache/catalina/loader/WebappClassLoader) текущего класса, org/apache/velocity/runtime/log/Log4JLogChute и загрузчика классов (экземпляр org/apache/catalina/loader/StandardClassLoader) для определяющего класса метода, org/apache/log4j/RollingFileAppender, имеют разные объекты класса для типа org/apache/log4j/Layout, используемые в сигнатуре – DolphinJava