2

Matlab アプリケーションで log4j 1.2 から log4j 2 に切り替えようとしています。

log4j-core-2.0-beta3.jar と log4j-api-2.0-beta3.jar を Matlab Java クラスパスに追加しました。

私のMatlabクラスコンストラクターでは、次のようにします。

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

this.logger = LogManager.getLogger(myClassNameAsString);

しかし、Logger オブジェクトを調べると、次のように表示されます。

K>> this.logger

ans =

myClassNameAsString:ERROR in Default

構成ファイルが定義されていません。log4jがデフォルトの構成を提供し、コンソールにログを記録することを期待していました(log4j2のドキュメントに従って)

私は何か間違ったことをしていますか?

Matlab 内から log4j2 を使用する際に問題はありますか?

編集:これは、Matlab 自体の内部ログ用に Matlab に組み込まれている log4j の使用に関連していると思います。ログバックがMatlabのlog4jの使用について不平を言うという点で、ログバックで同様の問題を回避することができました。classpath.txt ファイルはおそらくこれを解決するために使用できます。つまり、classpath.txt から log4j を削除しますが、これにより Matlab の内部ログが壊れる可能性があります。別のログ ツールに切り替えることで、この問題を回避しました。

4

1 に答える 1

1

私のバージョンのMatlab(R2012a)は内部でlog4jを利用しているため、コードが古いバージョンのlog4j(R2012a \ java \ jarext \ log4j.jar)にリンクしている可能性があります。

Matlab Root:\ toolbox\localディレクトリの下にあるclasspath.txtファイルを確認してください。

于 2013-02-04T20:54:56.130 に答える