如何解决如何使用命令行中的 logcat 通过 TAG 排除消息?
我正在以编程方式流式传输 logcat 输出,并且我想排除带有某些标签的日志。这是未经过滤的版本(有效):
Runtime.getRuntime().exec("logcat -v time");
这个用例在 Android Studio 中使用“Log Tag:”输入框是可能的,所以在命令行中也应该是可能的。
根据文档,您可以使用正则表达式过滤日志。与在标签上明确过滤并不完全相同,但我想它会这样做:
-e,--regex=
仅打印日志消息与正则表达式匹配的行。
来源:https://developer.android.com/studio/command-line/logcat.html?hl=en#options)
我不能让它工作。例如,我尝试过使用否定前瞻(“包括不包含这些关键字的所有内容”):
Runtime.getRuntime().exec("logcat -v time -e ^(?!.*(ConnectionTracker|SensorManager|SurfaceControl|TetheringManager|ThemeUtils|TransportRuntime|Openglrenderer|ViewRoot))");
...但它不起作用。
有效但超级丑:
class LogToFileRunnable implements Runnable {
@Override
public void run() {
try {
final Runtime runtime = Runtime.getRuntime();
final Process process = runtime.exec("logcat -v time");
final BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream(),Charsets.UTF_8));
String line;
while ((line = bufferedReader.readLine()) != null) {
if (!containsExcludedTags(line)) {
logFile.writeLog(String.format(Locale.ROOT,"%d-%s%n",CURRENT_YEAR,line));
}
}
} catch (IOException e) {
throw new LoggerException("Unable to write log to file.",e);
}
}
private boolean containsExcludedTags(@NonNull String line) {
return line.contains("/mali_winsys(") || line.contains("/mali::instrumentation::perfetto::frequency(") ||
line.contains("/AbsListView(") || line.contains("/ConnectionTracker(") ||
line.contains("/DecorView(") || line.contains("/FA ") || line.contains("/InputMethodManager(") ||
line.contains("/mali_egl(") || line.contains("/libEGL ") || line.contains("/DatabaseUtils(") ||
line.contains("/InputTransport(") || line.contains("/MixpanelAPI(") ||
line.contains("/SensorManager(") || line.contains("/SurfaceControl(") ||
line.contains("/System.out(") || line.contains("/TetheringManager(") ||
line.contains("/ThemeUtils(") || line.contains("/TransportRuntime(") ||
line.contains("/Openglrenderer(") || line.contains("/ViewRootImpl");
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。