5

私が取り組んでいるこのライブラリにロギングサポートを持たせたいのですが、AndroidとSEには独自のロギング方法があります。System.out.printlnSEでは、メソッドまたはjava.util.logging.Loggerクラスを使用できます。Androidはandroid.util.Loglogcatへのログオンに使用します。最初はリフレクションを使用してAndroidが使用可能かどうかを確認し、次にリフレクションを使用してLog.class;のlogメソッドを呼び出しました。しかし、それは良い考えではありませんでした。

私の解決策は、私のライブラリを使用している開発者にログを自分で処理させることです。彼らが設定したハンドラーインターフェースがあり、onLogメソッドがあります

public void onLog(int level, String tag, String msg);

ライブラリは、カスタムLoggerクラスのハンドラーでonLogメソッドを呼び出します。ライブラリ自体ではなく、開発者にログを処理させるのは良い考えですか?これまでのところ最善の解決策のようであり、私がそれを適切に文書化すれば、それは問題にはならないはずです。

4

2 に答える 2

2

ロギングはクライアントに委任する必要があり、あなたの自家製のアプローチは確かに賢明であることに同意します。

IMO、SLF4Jファサードはあなたの状況に理想的です。ライブラリにはslf4j-apijarが含まれ、SLF4Jログステートメントが含まれます。クライアントがログを記録したい場合は、ログバックエンド(およびオプションの構成ファイル)をアプリケーションのクラスパスにドロップして、ログステートメントをキャプチャ/表示します。

このアプローチの利点は、ロギングを取得するために必要なコーディングがゼロで、クライアントにほとんどの制御を許可することです。また、クライアントが利用可能な多くのバックエンドから選択できるようにします。

logbackJ2SEアプリとlogback-androidAndroidのバックエンドとして使用します。

于 2012-10-25T00:33:34.043 に答える
1

マイクロログを試すことができます

http://code.google.com/p/microlog4android/

これは、AndroidとJavaで一貫したロギングメカニズムを使用するのに役立ちます。slf4jを使用する場合は、microlog(Androidプロジェクトの場合)とlog4j(javaプロジェクトの場合)の両方のラッパーとして使用できます。

于 2012-10-24T05:09:55.263 に答える