問題タブ [slf4j]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java でのロギングはどうなっていますか?
他のパッケージではなく、次のパッケージのいずれかを使用するのはなぜですか?
- Java ロギング
- コモンズ・ロギング
- Log4j
- SLF4j
- ログバック
java - slf4j および log4j を使用した Hibernate 3.4
どうやら slf4j を使用している Hibernate 3.2 から 3.4 にアップグレードしようとしています。私たちのプロジェクトは現在 log4j を使用しています。したがって、slf4j-log4j12 でラップされた実装を使用する必要があると想定しています。
Maven slf4j の依存関係は次のとおりです。
log4j の依存関係は次のとおりです。
slf4j-log4j12 と log4j の両方が最新バージョンを参照しています (Maven リポジトリで見つけることができます)。アプリを実行すると、Hibernate がログに失敗します。
私は何が欠けていますか?
編集 1: pom.xml から log4j 依存関係を削除すると、エラーが発生します。
編集 2: このブログでは、この問題は、間違ったバージョンの slf4j-api.jar で出荷されている hibernate アノテーションが原因であると主張しています。
logging - 中央ロギング サーバーをセットアップし、ロギング イベントをテストと本番から分割する方法は?
次のように、中央ログ (またはおそらく 2 つ、それぞれがテストまたは本番専用) サーバーをセットアップするのに最適な方法は次のとおりです。
コードが条件文を参照していることを心配する必要はありません。これにより、製品エラー以外のエラーが製品エラー log4j バスに誤って記録される可能性があります。つまり、次のようなコードは必要ありません。
サーバー名などを密結合して参照し、コードは prod と test の 2 つのサーバー名のいずれかでしか機能しないため、これは望ましくありません。また、開発者がこれを正しく設定せず、ロギング リポジトリを汚染する可能性があるため、これを設定で宣言的に設定することもできません。助言がありますか?
いくつかの詳細、一部は考慮に入れませんが、とにかくそれらをリストします。
- 現在、 Oracle Application Server 10.1.3.4 で実行され、将来は Oracle WebLogicで実行される Web アプリケーションのみ
- http://timarcher.com/?q=node/10 ...例外として、中央サーバーはテキスト ファイルをログに記録し、メール送信は行いません!
- log4j を使用し、slf4j 経由でラップされる可能性があります (slf4j について言及するのはちょっと不謹慎なので、ほとんど無視してください..)
java - java.util.loggingをlog4jに送信する方法は?
log4jに対してすべてのロギングを行う既存のアプリケーションがあります。log4jを使用するか、Commons Loggingに対してログを記録する他の多くのライブラリを使用します。これにより、環境内でlog4jが使用されることになります。依存関係の1つは、slf4jに対してもログを記録します。これは、最終的にはlog4jにも委任されるため、正常に機能します。
ここで、キャッシュのニーズに応じて、このアプリケーションにehcacheを追加したいと思います。以前のバージョンのehcacheはcommons-loggingを使用していましたが、これはこのシナリオでは完全に機能していましたが、バージョン1.6-beta1では、commons-loggingへの依存関係が削除され、代わりにjava.util.loggingに置き換えられました。
java.util.loggingで利用できる組み込みのJDKロギングにあまり詳しくない場合、log4jに対してJULに送信されるログメッセージをログに記録する簡単な方法があります。これにより、既存の構成を使用して、今後のロギングを設定できます。 ehcacheから?
JULのjavadocsを見ると、LogManager
使用する実装を変更するために一連の環境変数を設定し、おそらくそれを使用しLogger
てJULLogger
クラスでlog4jをラップできるようです。これは正しいアプローチですか?
皮肉なことに、ライブラリで組み込みのJDKロギングを使用すると、他の地域(ほとんど)が代わりにサードパーティのライブラリを使用している場合に、このような頭痛の種が発生します。
java - Maven が hibernate-c3p0 の slf4j への依存関係を解決しない
hibernate-c3p0
Mavenのpom.xml
ファイルに含めると、ランタイムNoClassDefFoundError
が見つからないため、ランタイムが取得されますorg.slf4j.impl.StaticLoggerBinder
。Maven がこの依存関係を解決するというのが私の印象でした。c3p0 が slf4j を必要とする場合、slf4j がダウンロードされて含まれます。
私のpom.xml
ファイルには次のものがあります:
java - ロギングフレームワークを追加のレイヤーでラップする価値はありますか?
私は現在、中規模から大規模のJavaコードベースでロギングメカニズムをアップグレードすることを検討しています。メッセージは現在、Debug
クラスの静的メソッドを使用してログに記録されます。これからSLF4Jやcommons-loggingなどに切り替えることをお勧めします。
アプリケーションアーキテクトは、SLF4Jへの依存関係をカプセル化することを好みます(おそらく、前述のDebug
クラスにラップすることによって)。これにより、将来、ロギングの実装を簡単に変更できるようになります。
SLF4Jはすでに具体的なロギングの実装を抽象化しているため、これは私にはやり過ぎのように思えます。
SLF4Jのようなサードパーティのロギング抽象化を別の自家製の抽象化でラップする価値はありますか?
java - JSP で SLF4J ロガーを使用する方法
私は、中規模のアプリケーションのロギングを、カスタム ソリューションからより標準的なソリューションに移行しようとしています。Logback と SLF4J を使用することに決め、ほとんどの Java コードを正常に移行しました。ただし、ロギングに単に System.out を使用する JSP がかなりあります。私は JSP をあまり扱ったことがなく、疑問に思い始めました。JSP で適切なロギングをどのように使用すればよいのでしょうか。
これが最初に頭に浮かんだことですが、いくつかの点で間違っているようです。
- 非常に冗長で、既存の JSP を変換するには多くの作業が必要です。
- ページがレンダリングされるたびに LoggerFactory.getLogger() が呼び出されます (
logger
標準の Java クラスの静的フィールドとは対照的です)。 - ロガーの名前も、このようにあまり単純ではないものになると思います
JSP にログインするための標準やベスト プラクティスなどはありますか?
また、IIRC には、Log4J 用のある種の taglib がありました。SLF4J (または Logback) に似たものはありますか?
java - ロガーはどのアクセスレベルに設定する必要がありますか?
私はSLF4Jを使用しており、その下にLog4Jがあります。ロガーをどのアクセス レベルに設定する必要がありますか?