Kensuke Kousaka's Blog

Notes for Developing Software, Service.

Logcatで特定ログを除外する方法

Androidアプリの開発で動作ログを確認する際はLogcatを使うと思うが、verboseやwarningといったログレベルを各ログコードにおいて適切に設定できておらず、ログを追いかける際に冗長なログが大量に流れて辟易とした経験があるかもしれない。それぞれのログコードに対してログレベルを適切に振り分け、Logcatにてログレベルを用いて意図したようなフィルタリングができるよう修正するのが望ましいが、ひとまずの対策として特定ワードを含むログ出力を除外する方法について書き残す。

特定ワードを含むログの除外方法

Android StudioからAndroid Monitorを表示すると、右上にログ検索フィールドとフィルタリング設定のドロップダウンリストがあるかと思う。検索フィールドを用いるのもいいが、ここではフィルタリング設定を作成し、ここで特定ログの除外を行う。

フィルタリング設定の作成(編集)は以下画像に示す箇所から行う。

f:id:k3n:20180610152448p:plain

ここをクリックすると、以下画像に示すようなダイアログが表示される。

f:id:k3n:20180610152513p:plain

ここでは、ログメッセージ中に特定文字列が含まれている場合に、そのログを除外するような設定を行う。ダイアログ中のLog Message右にあるRegexチェックボックスにチェックを入れる。これにより対応する入力ボックス中に正規表現を含めることができ、より柔軟なフィルタリングが可能となる。

特定文字列が含まれている場合に、その行を無視させる(特定文字列が含まれていない行にマッチする)正規表現の構文は以下のようになる。

^(?!.*(WORD|YOU|DO|NOT|SHOW|IN|LOGCAT)).*$

対象となる文字列を増やしたい場合は、パイプ|を用いて繋げるといい。これをLog Messageの入力ボックスに入力し、OKボタンを押した後フィルタリング設定ドロップダウンリストから選択することで有効化される。