首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用Android中的本机logcat输出

禁用Android中的本机logcat输出
EN

Stack Overflow用户
提问于 2012-07-20 09:38:55
回答 3查看 8.6K关注 0票数 13

我正在使用三星Galaxy S3设备进行开发,我的应用程序使用的是摄像头。在logcat中,有一个由本机系统生成的带有标记Camera-JNI的输出,它以每秒20次的速度写入logcat,导致logcat非常快地清理最古老的条目。

是否可以从已经安装的应用程序或系统日志中禁用日志以防止这种情况发生?过滤器不能工作,因为logcat仍然是填充的,并且行仍然是被分类的。

谢谢。

编辑

文档says如下:

可以通过设置系统属性:setprop log.tag.<YOUR_LOG_TAG> <LEVEL>来更改默认级别。您还可以创建一个local.prop文件,其中包含以下内容:log.tag.<YOUR_LOG_TAG>=<LEVEL>并将其放在/data/local.prop中。

编辑2

我已经这样做了(生根设备,将local.prop文件推送到/data并重新启动),但是标记仍然出现。

EN

回答 3

Stack Overflow用户

发布于 2012-07-24 12:48:10

通过查看android源代码(2.3.x),我可以看到以下内容:

执行

代码语言:javascript
复制
shell setprop log.tag.XYZ

不会在这里工作(frameworks/base/core/jni/android_hardware_Camera.cpp),因为正在使用LOGV()宏进行日志记录。此日志记录方法不使用属性来检测某些组件是否希望禁用日志记录。这就是我能够通过android代码跟踪调用的范围。

因此,使用setprop(...)不适用于禁用android系统组件的日志记录,但是当日志来自用base/core/java/android/util/Log.javaframeworks/base/core/jni/android_util_Log.cpp进行日志记录的用户应用程序等时,它应该可以工作。我猜android_util_Log_isLoggable()是用来过滤的。

我认为,除了为您的设备构建源代码和禁用您正在使用的相机代码中的LOGV宏之外,我别无选择。

票数 7
EN

Stack Overflow用户

发布于 2012-07-24 03:05:12

你可以试试像adb shell setprop log.tag.Camera-JNI ERROR这样的东西。如果它不能工作,只需过滤日志或将其转储到一个文件中,然后使用grep查找您感兴趣的行,或者使用grep -v Camera-JNI过滤掉相机。

票数 1
EN

Stack Overflow用户

发布于 2015-11-21 12:30:34

如果希望看到特定的标记,请使用:

代码语言:javascript
复制
logcat -s YourTag:* SecondTag:* ThirdTag:* ...

您也可以使用adb logcat

只要您想要过滤所需的标记,就可以多次指定<TAG>:*

示例:adb logcat -s AndroidRuntime:* MyApp:*、filters、AndroidRuntimeMyApp标记。因此,您将看到所有未登录的异常(崩溃)以及应用程序的所有日志。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11576758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档