2016-10-11 20 views
0

私はこれは私が VelocityとLog4j2を統合するには?

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(); 
} 

のLog4jと速度1.7

を統合していた。しかしLOG4j2にアプリケーションをアップグレードした後、私は次の例外を取得していますどのようにあるのLog4jを使用したWebアプリケーションと速度V1.7

を持っています...

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

これは私がLOG4Jを使用していたとき、私は、上記の静的なブロックにVelocityEngineのプロパティを設定して作られた同じ例外です。

明らかに、Log4j2と互換性のあるLog4JLogChuteの同等物はありません。

誰でもLog4j2とVelocityの互換性を達成する方法を知っていますか?

答えて

0

log4j 1.x jarをlog4j-1.2-api jarに置き換えると、動作するはずです。

+0

プロジェクトのどこにでもlog4j 1.xがありません。また、アプリケーションにlog4j-1.2-api 2.7を追加しました。リンケージエラーが発生しました。 – DolphinJava

+0

指定していない可能性がありますが、Velocityが使用しています。その依存関係を満たす必要があります。 Mavenを使用している場合は、 "mvn dependency:tree"を実行して、log4j 1.x jarが存在するかどうかを確認することができます。そうであれば、それを含ませる依存関係から除外する必要があります。存在しない場合は、log4j-1.2-api jarを追加してください。 – rgoers

+0

ローダー制約違反:メソッド "org.apache.log4j.RollingFileAppender。(Lorg/apache/log4j/Layout; Ljava/lang/String; Z)V"をクラスローダー(orgのインスタンスorg/apache/velocity/runtime/log/Log4JLogChute、メソッドの定義クラスorgのクラスローダー(org/apache/catalina/loader/StandardClassLoaderのインスタンス)の現在のクラス(/ apache/catalina/loader/WebappClassLoader)/apache/log4j/RollingFileAppenderは、署名に使用されるorg/apache/log4j/Layoutタイプの異なるClassオブジェクトを持っています – DolphinJava

関連する問題