У меня есть веб-приложение, которое использовал 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.
У меня нет log4j 1.x в любом месте моего проекта. Кроме того, я добавил log4j-1.2-api версии 2.7 в свое приложение. Я начал получать ошибки связи. – DolphinJava
Возможно, вы не указали это, но Velocity использует его. Вы должны удовлетворить эту зависимость. Если вы используете Maven, вы можете запустить «mvn dependency: tree» и посмотреть, присутствует ли банкер log4j 1.x. Если это так, вы должны исключить его из зависимости, которая вызывает его включение. Если его там нет, просто добавьте банку log4j-1.2-api. – rgoers
Вот сведения об исключении: нарушение ограничения загрузчика: при разрешении метода «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