(Log.d()を使用して)デバッグ文字列を追加し、logCatのコンテンツからコンテキストでそれらを表示したいと思います。 LogCatの「保存」アイコンには「選択したアイテムを保存する」というヒントがありますが、コンテンツ全体を保存する、またはコンテンツ全体を選択する簡単な方法が必要ですが、その方法はわかりません。
あなたが探している答えを得ていないのですよね。
希望する2つの方法:1)logcatメッセージウィンドウを右クリックし、すべて選択を選択します。保存すると、そのウィンドウ内のすべてのlogcatメッセージ(スクロールして表示されないものを含む)になります。
2)logcatメッセージウィンドウにフォーカスがある場合、control-Aを入力すると、すべてのメッセージが選択されます。次に保存など.
Log catのコンテンツをファイルに保存するには、Android sdkのプラットフォームツールフォルダーにリダイレクトし、以下のコマンドを押す必要があります
adb logcat > logcat.txt
Platform-toolsフォルダーに「logcat.txt」という名前のファイルが作成されます。興味に応じて名前を変更できます。楽しい
LogCatログをデバイスのプログラムでファイルに保存するには、たとえば次のコードを使用します。
String filePath = Environment.getExternalStorageDirectory() + "/logcat.txt";
Runtime.getRuntime().exec(new String[]{"logcat", "-f", filepath, "MyAppTAG:V", "*:S"});
"MyAppTAG:V"
は、すべてのタグの優先度レベルを詳細(最低優先度)に設定します
"*:S"
は、すべてのタグの優先レベルを「サイレント」に設定します
Logcat here の詳細。
Dinesh Prajapati による回答に加えて、使用
adb -d logcat <your package name>:<log level>
ここで、-dはデバイス用であり、エミュレータログの代わりに-eを選択することもできます。ログレベルは a/d/i/v/e/w などです。
これで、コマンドは次のようになります。
adb -d logcat com.example.example:V > logfileName_WithPath.txt
コマンドプロンプトを開き、adb.exeを見つけます(Android-sdk/platform-toolsにあります)
adb logcat -d > <path-where-you-want-to-save-file>/filename.txt
パスを省略すると、logcatが現在の作業ディレクトリに保存されます
-dオプションは、現在の内容をダンプしてから終了することを示します。適切な読み取り可能な形式ですべてを取得できるように、このファイルを開くにはnotepad ++を選択してください。
String filePath = folder.getAbsolutePath()+ "/logcat.txt";
Runtime.getRuntime().exec(new String[]{"logcat", "-f", filePath, "MyAppTAG:V", "*:E"});
プログラムによるアプローチの追加のヒント:
String filePath = Environment.getExternalStorageDirectory() + "/logcat.txt";
Runtime.getRuntime().exec(new String[]{"logcat", "-f", filepath, "MyAppTAG:V", "*:S"});
これにより、logcatと提供されたファイルの間で連続出力ストリームが開きます。これにより、execによって返されたプロセスをwaitForした場合にデッドロックが発生するか、提供されたファイルが早期に破棄された場合に例外が発生する可能性があります。
「-d」フラグを含めると、単にlogcatがダンプされ、接続が閉じられるため、上記の動作が妨げられることがわかりました。
デバイスのコンソールウィンドウを開いており、Teratermを使用している場合は、メニューから[ファイル]を実行します。ログに記録すると、自動的にファイルに保存されます。
過去30分以内にタイムスタンプ付きで、または別の設定時間内にログのみを表示する場合の追加のヒント。システムに合わせて日付形式を調整します。これはUbuntu 16.04LTSで動作します:
adb Shell logcat -d -v time -t "$(date '+%m-%d %H:%M:%S.%3N' -d '30 minutes ago')" > log_name.log