問題タブ [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 - サーブレットで Hibernate を実行すると NoClassDefFoundError: org/slf4j/LoggerFactory が発生する
Hibernate (V3.3.2) を使用して HSQLDB からデータを読み取る Java (6) アプリケーションがあり、これを Eclipse (V3.5.1) でビルドおよびデバッグ/実行しましたが、正常に動作します。
次に、GWT (V1.7) サーブレット Web アプリを作成し、休止状態のクラスをそこにコピーして、同じユーザー ライブラリの依存関係を追加しました。ただし、サーブレットを実行して、コードを呼び出す URL にアクセスしようとすると、次のようになります。
DAOSession.java:40 は次のとおりです。
このエラーをグーグルで検索すると、クラスパスから slf4j-api.jar が見つからないことが示唆されますが、デバッグ プロパティのコマンド ラインを見ると、この jar がそこに表示されます。
jar を開くと、そこに LoggerFactory クラスが表示されます。
クラスローダーで見つからない理由はありますか?
編集 1:コードから org.slf4j.LoggerFactory にアクセスしようとすると、Eclipse は正常にコンパイルされますが、実行時に同じエラーが発生します。
編集 2:同じコードを呼び出して実行するメインの Test クラスを追加すると、動作します。したがって、このクラスパスの問題はサーブレットに固有のようです。
ありがとう、ジョン
documentation - ログバックチュートリアル
ログバックチュートリアルやサンプルプロジェクトはどこにありますか?この「 Log4jチュートリアル」に似たものがいいでしょう。
注:Logbackの公式Webサイトで入手できるドキュメントを知っています。
しかし、他に利用できるものはありますか?
java - WebSphere App Server の SLF4J メッセージ形式
ということで、また伐採に頭を悩ませています。私は知っています、それはどれほど複雑になることができますか? さて、見てみましょう...
WebSphere Application Server 6.1 (実際には Portal Server 6.1 ですが、内部は WAS 6.1 です) で実行する新しいプロジェクトを開始しています。私は通常、WAS プロジェクトに java.util.logging を使用していますが、すべて問題ありません。この顧客は SLF4J ファンで、それを使用したいと考えています。まあ、簡単に聞こえます。
そこで、slf4j-api-1.5.8.jar と slf4j-jdk14-1.5.8.jar を WEB-INF/lib ディレクトリにデプロイします。私のコードでは、-
予想どおり、SystemOut.log にエントリが記録されます。しかし、私が理解できないのはそのメッセージの形式です。サンプルは--
そのサンプル ログ エントリの内容を説明しましょう。com.example.MyClassの左側にあるものはすべて、jul フォーマッターから来ていると思います。その右側はすべて、log.debug() に含めたものです。では、誰がcom.example.MyClassを追加しているのでしょうか? 私が考えることができる唯一のことは、SLF4Jがメッセージを基礎となるjulに渡す前にそれを追加していることです
私をいらいらさせているのはcom.example.MyClassの部分です。SLF4J が生成するログ メッセージにそれを含めたくありません。クラス名はすでに含まれているので、必要のない余分な毛羽立ちです。さらに、実際のパッケージ名は非常に長く、それらを含めると、ログ エントリの実際の内容が右にずれすぎます。
単純な java.util.logging を使用すると、「com.example.MyClass」の部分が含まれていないことを除いて、ログ エントリはまったく同じです。まさに私が望むように!
問題は、WAS で SLF4J を介して生成されたログ メッセージで、この余分なクラス名エントリを削除するにはどうすればよいかということです。
ありがとう!
java - slf4j用のJava1.5varargs APIはまだありますか?
このロットを取り除きたい...
...そしてこれと交換してください...
...ログに記録する引数の数に応じてログの構文を変更する必要がないようにします。たくさんの議論と回避策があるようですが、それはどこにありますか?または、slf4jであるラッパーをラップする必要がありますか?
java - 新規参入者向けのアプリケーションで Facade または Logger をログに記録する
私は、小さなテスト Web アプリケーションのログが必要な時点にいます。私は log4j も java.util.logging も実際の経験がなく、すぐにロギング ファサード (slf4j) を開始する必要があるかどうかを考えていました。
共有されているライブラリ(フレームワーク)にはロギングファサードを使用する必要があることを読んでいましたが、これは理にかなっています。しかし、特定のアプリケーションの場合、どこに行けばよいかわかりません。パフォーマンスのために、log4j (または logback) を直接使用する方がよいでしょうか? それとも、とにかく他のものを知らないので、すぐに slf4j から始めるべきですか?
ありがとう
java - Log4j は Slf4j を支持して放棄されていますか?
log4j にはいくつかのクラス ローディングの問題があるようで、log4j から slf4j に移行する傾向にあるようです。(Hibernate は後者を優先して最初の使用を停止しました)
- 本当ですか?
- slf4j が解決する log4j の主な問題は何ですか?
- slf4j は最終的な言葉ですか、それともより優れた「次の次の log4j」業界標準はありますか?
アップデート:
- だから、デルフエゴによるこの答えは私を混乱させます.あなたはそれを受け入れる/異議を唱えることができますか?:
log4j (および Apache Commons Logging ライブラリ) の主要な問題に遭遇したようです。つまり、使用されている適切なクラスローダーを発見して対話するのに途方もなく苦労しているということです。ここには、例を含む非常に詳細な説明があります。持ち帰りのメッセージは、新しいロギング フレームワーク SLF4J の主要な原動力の 1 つは、これらの問題を完全に排除することであったということです。交換して、生活が楽になるかどうかを確認してください。
- log4j によるその他のクラスローディングの問題: http://articles.qos.ch/classloader.html
java - Mavenからの突堤の実行のロギングを無効にする
ソースから構築する必要のある大きなフレームワークをダウンロードしました。このプロジェクトはMavenビルド構造を使用しており、埋め込み桟橋で表示できるデモアプリケーションが含まれています。Mavenプラグインはこれらすべてを処理します。
ただし、デモアプリケーションを(mvn jetty:runを使用して)実行すると、何らかの理由でDEBUGレベルでのロギングがオンになり、アプリケーションが多くのステートメントのロギングにほとんどの時間を費やすため、実際には使用できません。応答性はほとんどゼロになります。
フレームワーク(geomajas 1.5.0)はSLF4Jを使用しているようですが、どこで構成されているのか、どこでオフにできるのかわかりません。
どんなアイデアでも大歓迎です...ありがとう!
更新: どうやら彼らはログバックを使用しています。構成ファイル(logback.xml)を見つけました。このファイルで、DEBUGレベルを編集して、ERRORに置き換えました。
変更が確実に反映されるように、プロジェクトをクリーンアップして再構築しました。しかし、問題は残っています!フォルダ内のlogback.xmlファイルを手動で確認したところ、target
更新されました。しかし、私はまだログレコードを見ています!
アップデート2 私はWindows7を使用しています。
java - slf4jからのロギングをオフにする方法
これは、appserverで大量のログエントリを生成するサードパーティのアプリケーションです。このような:
slf4jからのこの出力をオフにするにはどうすればよいですか?.warファイルを調べて、slf4jの構成を見つけましたが、何も見つかりませんでした。彼らのウェブサイトも役に立ちませんでした
java - Java: 適切にフォーマットされたログ出力を行うライブラリ
通常見られるものよりもはるかに優れた方法でログ出力ステートメントをフォーマットできるライブラリを見つけることができません。私が覚えている機能の 1 つは、ログ ステートメントが発生した場所の「ネスト」に応じて、ログ メッセージを「オフセット」できることです。
つまり、これの代わりに:
次のように表示されます。
これは私が作成したばかりの例です ( VeryLongCamelCaseClassNamesNotMine )。しかし、このようにきれいにフォーマットされたログ出力を見たのを覚えています。以前見たものよりもはるかに優れていました。単純に優れているだけでなく、コードの論理的な構成の一部を再現しているため、読みやすくもなりました。
それでも、その図書館が何であったかはもうわかりません。
log4jまたはsl4jと完全に互換性があると確信しています。
java - EJB3.1によるログバック
logback / slf4jを使用して、アプリケーションのロギングを処理しています。EJBを使い始めるまで、すべてが完全に機能していました。ステートレスEJBをアプリに追加すると、ロガーはlogback.xmlを無視し始め、アペンダーの使用を停止しました。プログラマティックロガー構成に切り替えて何が問題だったかを確認しましたが、EJB内でロガーを使用しようとすると、次のエラーが発生します。
org.slf4j.impl.JDK14LoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext
線に由来する:
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
ログバックをEJBで機能させるために必要な特別な構成はありますか?重要な場合は、glassfishv3にデプロイしています。