Khi đăng nhập Thẻ của tôi lúc nào cũng giống như thế này: "com.myapp"Android: Lọc Logcat bằng thẻ sử dụng regex
com.myapp.SomeActivity
Đối với mỗi câu lệnh log Tôi thêm vào trước phần đầu tiên vào Thẻ của lớp đang thực hiện cuộc gọi nhật ký. Ví dụ:
MyActivity extends Activity{
private static final String TAG = "MyActivity";
public void someMethod(){
LogWrapper.e(TAG, "Something is wrong here.");
}
}
lớp LogWrapper tôi về cơ bản nào sau đây
public class LogWrapper {
private static final String applicationTAG = "com.myapp.";
public static void e(String classTag, String message){
Log.e(applicationTAG + classTag, message);
}
}
Vì vậy, tất cả tôi làm là thêm vào trước một khóa tĩnh vào thẻ của lớp. Lý do là, tôi muốn lọc đầu ra logcat bằng các câu lệnh Log mà ứng dụng của tôi viết và tránh làm lộn xộn logfile của tôi với các bản ghi từ hệ thống hoặc các ứng dụng khác.
Do đó tôi đã đưa ra lấy các bản ghi như thế này:
String command = "logcat -d -v time com.myapp.*:I *:S"
Process process = Runtime.getRuntime().exec(command);
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
StringBuilder log = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
log.append(line);
log.append(StringUtils.NEW_LINE);
}
Tuy nhiên, tôi kết thúc với một logfile trống. Mà làm cho tôi điều biểu thức regex "com.myapp. : Tôi" không hoạt động. Tôi cũng đã cố gắng bỏ qua asterix () nhưng nó cũng không hoạt động. Tuy nhiên, nếu tôi sử dụng "*: I" hoạt động.
Điều gì khiến tôi tự hỏi, liệu chỉ có thể lọc theo tên thẻ hoàn chỉnh? Có cách nào tôi có thể giữ một nhật ký được lọc bởi "com.myapp". ?
tôi đoán kế hoạch B sẽ là trong vòng lặp trong khi tôi có thể kiểm tra nếu dòng chứa thẻ của tôi và thêm nó chỉ nếu đó là trường hợp, nhưng tôi thực sự muốn tránh điều đó ...