2017-12-08 2 views
-2

単純なJavaイベントライブラリを開発しています。複数のログシステムをサポートしたいと思います。 私はLoggerBridgeという名前の独自のクラスを使用してアイデアを持っています。ログシステム用のブリッジ

public void setLogger(LoggerBridge bridge){ 

} 

public class LoggerBridge{ 

    public void log(Level, String){} 

    ... 

} 

しかし、この解決策は実用的ではありませんが、この結果を達成するための他の選択肢がありますか? ブリッジは、すべてのタイプのロギングシステムをサポートしていますか?

+5

彼らはすでにそれらを作った、例えば 'SLF4J'を使ってください。あなた自身では書かないでください。 – Kayaman

+0

正確に何を達成しようとしていますか?私にとっては、 'Level'sを使う考えは良いと言えます。それは実際には他のロガーライブラリ(例えば' Log4j')と同じです。達成したいことと、現在の解決策があなたを満足させない理由をより正確にする必要があります。 – Zabuza

+0

"すべてのタイプのロギングシステムをサポートしています"は非常に厳しいです。 – Henry

答えて

0

これは、古い時代の問題といくつかのログファサードは、あなたが選択したのと同じロギングフレームワークを使用するユーザーを強制することなく、あなたは、例えば、ライブラリの中で物事を記録できるようにするために作られた(またはしようとしています複数のロギングフレームワークをうまく連携させる)。

最近のもののうちの1つはcommons-loggingですが、これは古くなったと考えられていますが、それを使用する古いライブラリがたくさんあります。実際のログシステムにブリッジすることができます(下記参照)。

より新しいものはSLF4Jを含みます。これらはライブラリを作成するときに使用する必要があります。したがって、実際のロギング実装ではなく、SLF4J APIをプログラミングする必要があります。あなたが例log4Jに使用するライブラリを持っているとき

logging bridgeはあるが、あなたの他のコードは、のは、Logback(かなり共通の組み合わせ)でSLF4Jを言わせて使用​​しています。ブリッジは実際にはSLF4J+Logbackの組み合わせにログをリダイレクトするときにlog4Jライブラリである "偽造"します。