web-dev-qa-db-ja.com

どのAndroid使用するロギングフレームワーク?

私の質問は簡単に答えられるようですが、いくつかの良い解決策があります。 「最高の」ものを選ぶのが好きです。

利用可能なフレームワーク(詳細についてはお気軽に):

長所短所:

アンドロログ:

  • Pro:Android logging frameworkに似ているため、既存のコードにわずかな変更のみがあります。エラーレポート(例外の周りのログ)でより詳細なクラッシュレポートを送信できます。
  • Con:標準なしJava "getLogger"アプローチ; sdcardにプロパティファイルをアップロードすることで実現可能なプロダクション構成; init loggingを手動で呼び出す必要があります;定数のようなLOG_TAGを作成するか、ログを作成するためにハックする必要があります標準の動作を実現するためのアスペクトによるタグ定数:タグはクラス名です;ロギングがビジネス要件である場合、それをテストする必要があります。Androidほぼ不可能; Loggerはできませんフレームワークにより注入

Log4J-Android:

  • Pro:Javaにログインする標準的な方法。 SLF4Jと互換性があります。プロパティファイルを解析できます。
  • 欠点:組み込みのクラッシュレポートシステムはありません。私には思えます:一般的には使用されないので、使用するのは危険かもしれません。

SLF4J-Android:

  • Pro:Log4J-Androidのような多くの人々によって開発されているようです。 logger.debug("Some log message. Details: {}", someObject.toString());は、ロガーがオフになっている場合に文字列の連結をスキップするための優れた効果的な方法です。 Android.util.Logに委任する軽量ロガーバインディング。
  • 短所:Androidプラットフォーム上のログタグの長さ制限により、23文字以下の自動生成ログタグ(例:com.example.myapp.MyClassタグはc*.e*.m*.MyClassに変換されます) )、異なるクラスに対して同じログタグが生成される可能性があります(たとえば、com.example.app.MyClasscom.example.anotherapp.MyClassは両方ともc*.e*.a*.MyClassに変換されます);クラッシュレポートシステムは組み込まれていません。

これらのほかに、私はAndrologの動作が好きですが、私はJava dev、log4j/slf4jに精通しています。クラッシュレポートシステムが必要です。しかし、クラッシュレポートにはいくつかのフレームワークがあります。 of Androidデフォルトのクラッシュレポート)。

Log4J Androidを使用するなど、それらのいくつかを組み合わせることができますが、andrologフレームワークを使用するためのアペンダーを作成しますが、遅かれ早かれ混乱するため、避けるべきです。

あなたの提案をありがとう、私は結果が将来他の人を決定するのに役立つことを願っています.

編集:以下で説明するように、ex:log4j-Androidとslf4jを組み合わせることができます(log4jを使用する場合は、ログフォーマットのサポート( "{}"、...)で行うのが望ましいですが)質問に答えません。フレームワークを選択する必要があり、それからSLF4Jファサードで装飾できます。

53
Marcell

より良い方法。 SLF4J API +その実装の一部を使用することだと思います。

Androidアプリケーションの場合、次を使用できます。

  1. Android Logger は、軽量でありながら設定が簡単なSLF4J実装です(<50 Kb)。
  2. LOGBack は最も強力で最適化された実装ですが、そのサイズは約1 Mbです。
  3. あなたの好みによるその他: slf4jandroidslf4j-Android
12
stefan.nsk

this 最初の回答を確認してください

それは言います:

SLF4Jは基本的に抽象化レイヤーです。ロギングの実装ではありません。つまり、ライブラリを作成していてSLF4Jを使用している場合、そのライブラリを他の誰かに使用してもらうことができ、SLF4Jで使用するロギング実装を選択できます。 log4jまたはJavaロギングAPI。プロジェクトに依存するライブラリを使用しているという理由だけで、プロジェクトが多くのロギングAPIに依存するのを防ぐのに役立ちます。

要約すると、SLF4Jはlog4jを置き換えるものではなく、連携して動作します。ライブラリ/アプリからlog4jへの依存関係を削除します。

5
silwar

元のslf4j.org-Android を試しましたが、残念ながらこのjarはデバッグ出力に内部的にLOG.isDebugEnabled()を使用するため、デバッグ/詳細メッセージをログに記録できませんでした。 。

現在は、代替設定 lp0-slf4j-Android を使用します。これは、有効になっている場合はデバッグ/詳細メッセージを取得できるロギング設定でプロパティファイルを使用します。

2
k3b