【问题标题】:Filter log by text?按文本过滤日志?
【发布时间】:2015-04-20 11:45:38
【问题描述】:

我正在使用adb shell logcat -v time filename 命令以编程方式将日志存储到 android 设备上的文件中。

有一些内存释放活动的内部日志存储在“dalvikvm”标签下。 (请参阅下面的日志)。我对这些日志没有任何问题,但由于这些日志,日志文件变得更重。 所以我担心的是减少其中包含GC_CONCURRENT freedWAIT_FOR_CONCURRENT_GC 文本的日志。

我也尝试通过使用它的标签来减少日志,但它会删除与该标签相关的所有日志。我不想在相同的标签名称下丢失所需的标签。我只是不想要其中包含 GC_CONCURRENT freedWAIT_FOR_CONCURRENT_GC 文本的日志。

有什么办法或任何 adb 命令来解决这个问题。提前致谢。

04-18 01:02:53.644: D/dalvikvm(4302): GC_CONCURRENT freed 511K, 21% free 4106K/5192K, paused 5ms+1ms, total 19ms  
04-18 01:02:53.644: D/dalvikvm(4302): WAIT_FOR_CONCURRENT_GC blocked 6ms  
04-18 01:02:53.684: D/dalvikvm(4302): GC_CONCURRENT freed 512K, 21% free 4106K/5192K, paused 1ms+1ms, total 15ms  
04-18 01:02:53.684: D/dalvikvm(4302): WAIT_FOR_CONCURRENT_GC blocked 6ms  
04-18 01:02:53.724: D/dalvikvm(4302): GC_CONCURRENT freed 512K, 21% free 4106K/5192K, paused 2ms+1ms, total 16ms  
04-18 01:02:53.724: D/dalvikvm(4302): WAIT_FOR_CONCURRENT_GC blocked 6ms  
04-18 01:02:53.764: D/dalvikvm(4302): GC_CONCURRENT freed 512K, 21% free 4106K/5192K, paused 1ms+1ms, total 16ms  
04-18 01:02:53.764: D/dalvikvm(4302): WAIT_FOR_CONCURRENT_GC blocked 7ms  

编辑

我正在使用 adb shell logcat -v time | grep -v \"GC_CONCURRENT\\|WAIT_FOR_CONCURRENT_GC\" > " + filename 命令。 当我将filename 作为我计算机的本地路径时,它正在工作。 但是当我尝试使用 android 设备/data/data/packagename/filename.txt 时,它无法正常工作。 它说bash: /data/data/packagename/filename.txt : No such file or directory 任何人都可以为此提出解决方案。

【问题讨论】:

  • 最近的版本有一个grep,它可能(或者可能不是?)足够完整,可以用 -v 进行否定匹配并用 \| 接受多个字符串- 即,grep -v "CG_CONCURRENT\|CONCURRENT_GC"。但是,如果您仍然要捕获到 Java 代码中,您可以使用 String 的 .contains() 方法在那里进行过滤,丢弃任何匹配的行。

标签: android shell adb logcat dalvik


【解决方案1】:

不要忘记您可以将主机端实用程序与 logcat 的输出一起使用。我建议使用 grep。特别是,它的 -v/--invert-match 选项。

adb logcat | grep -v "GC_CONCURRENT\|WAIT_FOR_CONCURRENT_GC" > filename

【讨论】:

  • 这个命令实际上过滤了不需要的日志grep -v "GC_CONCURRENT\|WAIT_FOR_CONCURRENT_GC"
【解决方案2】:

使用标签名称打印特定日志的命令。 *:S 不读取与GC_CONCURRENT freedWAIT_FOR_CONCURRENT_GC 相关的日志

语法

 adb logcat TAG_NAME:PRIORITY

下面一行只显示带有ActivityManagerMY_CUSTOM_TAG..标签的日志

adb logcat ActivityManager:I MY_CUSTOM_TAG:D ANOTHER_CUST_TAG:D *:S

S — 静音(最高优先级,不会打印任何内容)

欲了解更多信息,请访问官方文档

  1. Android Debug Bridge
  2. Reading and Writing Logs

已更新错过转储到文件。

转储到文件

`adb  logcat -d ActivityManager:I MY_CUSTOM_TAG:D ANOTHER_CUST_TAG:D *:S > filename.txt`

【讨论】:

  • 希望在执行上述命令后得到否定点并且没有得到问题需要的输出:) ....
猜你喜欢
  • 1970-01-01
  • 2014-07-22
  • 2021-04-26
  • 2014-05-23
  • 1970-01-01
  • 2019-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多