log4jをslf4jにアップグレードする必要がありますか?[終了]


10

私たちは、いくつかの計画リファクタリングのための私達のJEE Webアプリケーションを検討していると提案の一つは、交換することであるlog4jlogbackか、slf4j

チームはこれを行うべきかどうか明確ではありません。現在壊れていない場合はフォローしたいので、この領域では修正しないでください

編集:私はロギングフレームワークの比較を求めていませんが、log4jに非常に満足しているときにフレームワークを変更することがリファクタリングの要素であるかどうかを尋ねています

回答:


18

考慮すべき重要な質問の1つは、他の誰かが使用するライブラリを構築するか、最終製品を構築するかです。

最初のケースでは、SLF4jは非常に重要です。誰かがあなたのライブラリを、すでにログインしている彼のソフトウェアに統合し、あなたのクラスがそれを使うだけでいいので。

2番目のケースでは、そのままにしておくことができます。多分次のプロジェクトでslf4jを使うことを考えてください。


7

しないでください。代わりに、有用で価値のある機能の実装に時間を費やす方がよいでしょう。


6
-1:ロギングは可能な限り優れている必要があります!

7
それで、彼らが使用するlog4jは十分に役に立ちませんか?それが可能であるという理由だけでフレームワークを置き換えることは、時間の無駄です。OPは、ロギングは壊れていないと述べています。
マーティンウィックマン、2011

1
私はこれに反対票を投じません。マーティンは正しいかもしれません。ホセに完成品(ライブラリではなく、私の答えを参照)がある場合、そのままにして、どこか他の場所で時間を過ごす必要があります...
TimBütheApr

2
@Thorbjørn、いいえ、ロギング(一般的な機能として)は、必要なだけ優れている必要があります。彼らがLog4Jに問題を抱えていない場合(ところで、いずれも引用する必要がなく、それを置き換える必要がない場合)は、おそらくそれらの時間のより良い使用法があります。
ペーテルTörök

1
-1:無条件の優先順位はIMHOの誤りです。この答えをTim Buethの答えの条件付けと対比してみてください。
Ajeet Ganga 2013

1

Log4Jが機能する場合、それを変更する理由はありません。そうでない場合は、必要なことを行う代替手段を探します。これはslf4jである場合とそうでない場合があります。

誰かが何か他のものよりも優れていると言ったからといって、アプリケーション全体を変更する(またはその何かをまったく新しいものにする)べきではありません。


0

Slf4jは、コンパイル時に決定するのではなく、デプロイメント時にlog4j、logback、またはデフォルトのjdkロギングを使用するかどうかを選択できるAPI です(これは、log4jに直接コーディングするときに発生します)。

Slf4jは{} -constructも提供します。これは、高価なtoString()呼び出しを遅延させる可能性があり、ログステートメントが有効になっていない場合にそれらを完全に回避します。

その後、エンジンを選択できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.