2017-06-11 4 views
1

デフォルトではデフォルトのロギングファイルに出力されるAndroidネイティブレイヤーの特定の.soをデバッグモードでコンパイルしています。Androidネイティブ - ログカットを傍受またはフィルタリングする方法

しかし、このデータをログに保存するのは、ロギングファイルが圧倒されるためです。私はそれをデバイスからストリーミングする予定です。

POSSIBLE SOLUTIONS

  1. は出力しないようにログファイルにデバッグ情報を.soコードを変更します。
    確かに最も簡単な方法ですが、これは.soの変更が必要になるため、これをしないことをお勧めします。私はこれが些細な修正であるはずだと同意しますが、.soを可能な限り修正する必要があります。
  2. ファイルのエイリアスを作成し、そのアプリケーションにすべての書き込みを(teeのように)パイプし、実際のファイルに選択的に書き込みを許可する方法はありますか?
  3. logcatいくつかの正規表現を使ってこのフィルタリングを行うフィルタリングツールがありますか?
+0

'adb logcat -v threadtime MySpammyTag:E'?そうすれば、 'MySpammyTag'でタグ付けされたものは、' ANDROID_LOG_ERROR'以下の重大度で除外されます(タグを完全に無音にしたい場合は 'S'を使います)。 – Michael

答えて

0

まず、最初の解決策は、ほんの些細なものと優れたものです。これは、削除される可能性のあるlogcatフィルタリングとは異なり、コード内に残るためです。あなたは、唯一、デバッグのためのデバッグモード用コードので変更を#ifdefを使用してコードを変更しますが、リリースの生成.soはしていません - 要求事項は、できるだけ.soを変更する場合 は、本当の問題はありません変化する。これはあなたに非常に良好な制御を与えるだろう - しかし、あなたは「特別な」デバッグコードの多くを持っている場合には、それは少し醜い...

編集したコードを作成します:あなたはあなたに書きたい場合は 独自のログを使用して、あなた自身のパラメータでRuntimeクラスを使用してlogcatを実行することができます - こちらをご覧ください:Using GREP command to filter logcat in Android

ログキャストのフィルタリングについては、Android Studioのフィルタリングでregexを使用できます。入力ボックスの横に「正規表現」チェックボックスがあります。詳細はこちらをご覧ください:How to exclude certain messages by TAG name using Android adb logcat?

+0

このソリューションは、データがログファイルに保存されることを防止しません。私には見えない。 – Adrian

+0

@Adrian私はあなたのポイントに言及しました。あなたは可能な解決策として#1を書いていましたが、あなたはこの方法を知らないとは言いませんでした。私もそれをカバーするために私の答えを更新しています。 – yakobom

関連する問題