1 package net.osdn.gokigen.cameratest.logcat;
3 import java.io.BufferedReader;
4 import java.io.InputStreamReader;
5 import java.util.ArrayList;
17 * @param ringbuffer : main - メイン ログバッファ, radio - 無線通信や電話に関連するメッセージが含まれるバッファ, events - イベントに関連するメッセージが含まれるバッファ
18 * @param logFormat : brief - 優先度 / タグとメッセージ発行元プロセスの PID, process - PID のみ, tag - 優先度 / タグのみ, raw - 生のログ, time - 日付、起動時刻、優先度 / タグ、メッセージ発行元プロセスの PID , threadtime - 日付、起動時刻、優先度、タグ、メッセージ発行元スレッドの PID および TID, long - すべてのメタデータ フィールド
19 * @param filterSpec : レベル : SFEWIDV
20 * @param filterString : 指定した文字列がログに含まれている場合に表示
21 * @param filterRegEx : 指定した正規表現の文字列がログに含まれている場合に表示
25 List<String> getLogCat(String ringbuffer, String logFormat, String filterSpec, String filterString, String filterRegEx)
27 final int BUFFER_SIZE = 8192;
28 ArrayList<String> listItems = new ArrayList<String>();
31 ArrayList<String> commandLine = new ArrayList<String>();
32 commandLine.add("logcat");
33 commandLine.add("-d"); // -d: dump the log and then exit (don't block)
34 commandLine.add("-b"); // -b <buffer> : request alternate ring buffer ('main' (default), 'radio', 'events')
35 commandLine.add(ringbuffer); // <buffer> option.
36 commandLine.add("-v"); // -v <format> : Sets the log print format, where <format> is one of:
37 commandLine.add(logFormat); // brief process tag thread raw time threadtime long
38 commandLine.add(filterSpec); //
39 Process process = Runtime.getRuntime().exec(commandLine.toArray(new String[commandLine.size()]));
41 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()), BUFFER_SIZE);
45 line = bufferedReader.readLine();
48 int filterLength = filterString.length();
49 int filterRegExLength = filterRegEx.length();
50 if (((filterLength == 0)&&(filterRegExLength == 0))||
51 ((filterLength > 0)&&(line.contains(filterString)))||
52 ((filterRegExLength > 0)&&(line.matches(filterRegEx))))
61 } while (line != null);