2

Log4J文字列連結からSLF4Jのパラメータ化されたロギングに変更するために、それぞれ約10万から2万行のコードを含む約400の本番Javaソースコードファイルがあります。

if(log.isDebugEnabled(){
    log.debug("Came here with value: " + car.getName());
}

パラメータ化されたSLF4Jのロギングを利用したい

log.debug( "値を付けてここに来ました:{}"、car.getName());

このプロセスを自動化するスクリプトを書くことを考えていましたが、実際にこれを行う方法はありますか?

SLF4Jのパラメーター化されたロギングに変更したい主な理由は、パフォーマンスによるものです。

LogBack +SLF4JにはJavaSE5以降が必要であるため、SLF4J + Log4Jを使用しますが、J2SE1.4JVM環境で作業する必要があります。

4

1 に答える 1

3

org.slf4j.impl.Log4jLoggerAdapterは、すでに行っているのとほぼ同じコードを使用するため、SLF4J / LOG4Jを使用すると、パフォーマンスが向上する どうかは疑問です(ロガーが有効かどうかを2回評価します)。最初にデバッグログが有効になっているかどうかを確認し、次にフォーマットされたメッセージをorg.apache.log4j.Categoryに送信します。org.apache.log4j.Categoryは、メッセージを構成されたレベルでログに記録する必要があるかどうかを再度確認します。

それでも、はるかに読みやすく短いため、パラメータ化されたロギングに変更することが重要になります。残念ながら、コードをリファクタリングするための認証された方法についてはわかりません。

編集:いくつかの基本的な移行(インポート行とロガー宣言)を行うのに役立つと思われるSLF4J移行機能が存在することに気づきました。これは移行を開始するのに役立つ可能性があります-ロギングステートメントは変更されず、手動でリファクタリングする必要がありますが。

于 2011-07-17T20:01:48.657 に答える