Logcat はログのフィルタリングを許可しますが、次のように機能します。フィルターを定義すると、logcat はフィルターに一致するメッセージのみを表示します。しかし、フィルタによって定義されたいくつかのタグを除いて、すべてのログを表示する方法はありますか?
11 に答える
正規表現入力ボックスと否定先読みアサーションを使用して、DDMS Monitor (および Eclipse または Android Studio) 内からこれを行うことができます。たとえば、次のようにログから多くのノイズを除外しています。
tag:^(?!(WifiMulticast|WifiHW|MtpService|PushClient))
(「tag:」は正規表現の一部ではありませんが、LogCat に Tag フィールドにのみ正規表現を適用するように指示します。保存されたフィルターでこのトリックを使用する場合は、「Tag」入力ボックスに正規表現のみを入力します。 、「tag:」プレフィックスを省略します)
Android Studio の logcat モニター ペインでは、右上のドロップダウンを開き ([選択したアプリケーションのみを表示] が選択されている場合があります)、[フィルター構成の編集] を選択することで、保存されたフィルターを設定できます。新しい logcat フィルタを作成し、^(?!(WifiMulticast
...etc を配置します。))
ログタグボックスで、Regex
チェックボックスをオンにします。
Android Studio で特定のメッセージをタグ名で除外またはフィルター処理する場合は、LogCat ウィンドウに移動 => フィルター構成の編集を行い、"by Log Tag(regex):" の下に次のように入力します。
^(?!(tag1|tag2|tag3|tag4))
スペースがないことに注意してください。これは重要です
使用している場合はadb logcat
、grepを介してパイプし、逆マッチングを使用できます。grepのマンページから:
v、-invert-match一致する意味を反転して、一致しない行を選択します。
例えば:
$adb logcat | grep --invert-match 'notshownmatchpattern'
正規表現を使用してこれを拡張できます。
このような式の例を次に示します。
"/^(?:emails|tags|addresses)"
これは、指定されたもののいずれかが発生するかどうかをチェックし、grepはそれらをリストしません。
より強力なフィルタリングを行うには、正と負の両方の先読みを組み合わせます。
例:
(?=(AndroidRuntime|Main|RandomTag))(?!(Audio))
最初のネストされた括弧内のタグが含まれます。
秒のタグは除外されます。
これを行う簡単な方法は、表示したいタグのみをフィルタリングすることです。
adb logcat -s "Tag1" -s "Tag2" -s "Tag3"
それらのタグのみを表示します。
Eclipse Logcatビュー内には、そのようなオプションはありません。ただし、ログレベルを利用して、ログレベルが低すぎるメッセージを除外することができます。例:I(nfo)に設定しても、D(ebug)および(V)erboseメッセージは表示されません。