log4j2 へのマイグレーション
Sterling™ Order Managementシステムコードによって主にロギングに使用され、顧客コードによっても使用される YFCLogCategory クラスは、 log4j 1.x クラスである org.apache.log4j.Category を拡張していません。 YFCLogCategory クラスで定義されていないメソッドを使用している場合、カスタム・コードはこのリリースの影響を受けます。 YFCLogCategory クラスによって定義されておらず、 org.apache.log4j.Category 親クラスから使用可能なメソッドはサポートされません。
YFCLogCategory クラスに追加されました。 ただし、これらはダミー・メソッドであり、後のリリースで削除される可能性があります。public void log(Object level, Object obj)public void setLevel(Object level)public boolean isEnabledFor(Object level)
YFCLogCategory.getLogger() メソッドはサポートされていません。 代わりに YFCLogCategory.instance(Class.class) メソッドを使用してください。
private static YFCLogCategory logger = YFCLogCategory.instance(MyClassName.class);YFCLogCategoryインスタンスをorg.apache.log4j.Categoryまたはorg.apache.log4j.Loggerにキャストする場合、これはサポートされません。YFCLogCategoryのインスタンスをorg.apache.log4j.Loggerまたはorg.apache.log4j.Categoryにキャストしても、新規コードの作成時にコンパイルされません。 これらのキャストがある既存のカスタム・コードの場合、カスタム・コードは実行時にClassCastExceptionを検出します。 例えば、以下のコード・パターンの行 #2 および #3 はサポートされていません。YFCLogCategory LOGGER = YFCLogCategory.instance(MyClass.class.getName()); org.apache.log4j.Logger apLogger=(org.apache.log4j.Logger)LOGGER; // Not supported org.apache.log4j.Category apCategory=(org.apache.log4j.Category)LOGGER; // Not supportedlog(Level level, Object)を呼び出す場合は、YFCLogCategoryクラスによって提供される error (Object) や debug (Object) などの特定のメソッドに置き換えます。setLevel(Level level)を呼び出す場合は、削除する必要があります。 log4j2 は log4j2 API ではサポートされないため、log4j2 でロガーのレベルを変更することはできません。 ログ・レベルのさらなる管理はコードによって行われ、拡張ロギングの対象となるコードの特定の部分に対してトレースを作成する必要があります。isEnabledFor(Level level)呼び出す場合は、isInfoEnabled isTimerEnabledなどの特定のメソッドに置き換えてください。
Sterling Order Management System は、セキュリティー上の理由から、出荷された Jar から log4j 1.2.17 Jar を除去しているため、 org.apache.log4j.* クラスへのすべての直接呼び出しを除去する必要があります。 org.apache.log4j.* クラスの呼び出しまたはインポートを削除できない場合は、 Apache 公式サイトからダウンロードして、 log4j 1.2.17 Jar をカスタマイズ・パッケージに含める必要があります。
org.apache.log4j.Loggerを削除し、YFCLogCategoryを使用します。org.apache.log4j.Levelを削除し、YFCLogCategoryで特定のメソッドを使用します。
IBM では、 Apache log4j (v2 または v1) クラスを直接使用しないことをお勧めします。 YFCLogCategoryを使用することができます。これにより、 Sterling Order Management Systemの基礎となるロギング API の変更に公開されなくなります。
log4j 1.x Jars に依存するサード・パーティー・ライブラリーがある場合は、カスタマイズ・パッケージにパッケージ化するサード・パーティー Jar ファイルの解凍された内容に対して以下のコマンドを実行して、そのような Jar を検索します。
jar -xvf <third-party jar>
grep -rnw 'org.apache.log4j'このコマンドは、 log4j 1.x Jar に依存するクラスを出力します。 結果が見つかった場合は、その Jar ファイルの更新バージョンが使用可能かどうかを確認する必要があります。
slf4j や commons-logging などの一部のロギング関連サード・パーティー・ライブラリーには log4j 1.x Jar 依存関係がある場合がありますが、これらのライブラリーは無視してかまいません。