私は、さまざまなアプリケーションで使用するさまざまな機能を収集するライブラリを作成しています。ライブラリのユーザが見ることができるログステートメントを生成したいとします。つまり、アプリケーションをビルドしてライブラリを使用している場合、ライブラリにログステートメントを表示させたいと思っています。それ、どうやったら出来るの?ログファイルはアプリケーションの開発者によって設定されるので、私のライブラリはどのようにログを取るべきかを知っていますか?Logger for Javaライブラリ
答えて
ライブラリを開発している場合は、アプリケーションにログファサードを使用する必要があります。それ以外の場合は、ライブラリのユーザに、アプリケーションとして選択したフレームワークに加えて、を選択したロギングフレームワークを設定して、強制的に組み込みます。例えば
あなたはのlog4jを使用しますが、あなたのライブラリーを使用する開発者は、彼があなたのライブラリーを幸せにするためにlog4jの設定ファイルとlog4jのjarファイルを含める(またはother measuresを取る)する必要がありますlogbackを使用している場合。
ロギングファサードには、(Apacheのコモンズログからの)この問題を解決:
情報をログするために非常に便利であるライブラリを書きます。しかし、そこには多くのロギング実装が存在し、ライブラリはライブラリが属するアプリケーション全体に特定のものを使用することはできません。
ロギングパッケージは、さまざまなロギング実装間の超薄型ブリッジです。コモンズロギングAPIを使用するライブラリは、実行時にすべてのロギング実装で使用できます。 Commons-loggingには、多くの一般的なロギング実装がサポートされています。他のもののためのアダプタの作成は、非常に簡単な作業です。
またはSLF4Jから推論:
Javaまたは(SLF4J)のための簡単なロギングファサードは、例えば、様々なロギングフレームワークのための単純なファサード又は抽象として機能しますjava.util.logging、log4j、およびlogbackを使用して、エンドユーザがデプロイメント時刻に目的のログフレームワークをプラグインできるようにします。ログファサード
候補者は、次のとおりです。
- Apache Commons Logging は個人的に私は SLF4J( Logback付き)をお勧めします。
あなたの例は誤解を招きます。開発者は、サードパーティ用のコードとlog4jアダプタ用のSLF4J APIを同時に使用することができます。その後、彼はちょうどログバックのようないくつかのSLF4Jバックエンドを選びます。実際これがSLF4Jの理由ですが、それはとても簡単です。 log4j設定は不要です。 –
@RostislavMatl SLF4Jの「ブリッジングモジュール」(http://www.slf4j.org/legacy.html)についてお聞かせください。これらを使用すると、log4j、...を内部的に使用するライブラリを使用して、ログメッセージをSLF4J(ログバックによってバックアップされる可能性があります)にリダイレクトできます。あなたが図書館のユーザーであれば、これは確かに素晴らしい機能です。しかし、あなたがライブラリの開発者であるときに、なぜあなたはそのようなフープでジャンプするようにユーザーを強制すべきですか?なぜファサードを直接使用しないのですか? SLF4Jのページに記載されているように、これらのソリューションは「あなたの制御を超えたソフトウェアに適しています」。私があなたに誤解した場合は、私を修正してください。 – Joe23
どうやら私たちはさまざまなことについて話しています。あなたは書いています:「あなたがlog4jを使っていて、あなたのライブラリを使っている開発者がlogbackを使うのなら、彼はlog4jの設定を含める必要があります」 - それは真実ではありません。それは同時に悪い解決策です。 新しいコードを開発する際にSLF4Jを使用できないとは言いませんでした。 ライブラリのユーザーポイントまたはビューを選択したのは、ユーザーとクリエイターの方が多いからです。 –
標準溶液は以下のとおりです。
- のLog4J:http://logging.apache.org/log4j/
- SLF4J:http://www.slf4j.org/
- JDK内蔵ロガー:https://docs.oracle.com/javase/8/docs/technotes/guides/logging/overview.html
それらのすべては、あなたが設定できるようになります設定によるログファイルの場所。
- 1. Java Logger for Arduino
- 2. Sinatra Logger for Webサービスエラー
- 3. javaライブラリfor zip64
- 4. CruiseControl.NET MSBuild Logger for .NET 4
- 5. Javaライブラリfor Hijri(Umm Al-Qura)カレンダー
- 6. Netbeans Logger
- 7. QRライブラリfor MonoTouch?
- 8. AS3ライブラリfor Socket.io
- 9. Swfライブラリfor C#
- 10. Cryptoライブラリfor C++
- 11. オープンソースCoverFlowライブラリfor iPhone
- 12. Qtラッパーfor Cライブラリ
- 13. SAMLライブラリ/コンポーネントfor .NET
- 14. Amazon APIライブラリfor Python?
- 15. password redacting logger
- 16. Application Logger
- 17. stdout logger Python
- 18. 良いサウンドクラス/ライブラリfor Actionscript 3.0
- 19. ベストjson rpc 2.0ライブラリfor Android
- 20. Mono for AndroidフルバージョンエラーコンパイルGoogle Mapsライブラリ
- 21. Calltree for C++標準ライブラリ
- 22. 64ビットsmppライブラリfor .net
- 23. foreachのforループとforループfor java
- 24. Spring JavaConfigとlog4j logger
- 25. jetty Loggerエラー:org.eclipse.jetty.util.log.Log.getLogger
- 26. Bash Command Logger
- 27. Ninject logger using NLog
- 28. JDK Logger Vs Log4j
- 29. Fog :: Loggerのベストプラクティス
- 30. OpenMicroBlogging-library for Java?
Springのフレームワークを見てみましょう。具体的には、依存性注入機能は、あなたにとって最も有用な部分です。 – cdeszaq