我正在使用三星Galaxy S3设备进行开发,我的应用程序正在使用相机。
在logcat中,本机系统使用标记Camera-JNI
生成的输出每秒写入logcat 20次,导致logcat非常快速地清理最旧的条目。
是否可以禁用已安装的应用程序或系统日志中的日志以防止这种情况发生?过滤器不起作用,因为logcat仍然被填充并且行仍然被clared。
谢谢。
编辑
文档says this:
您可以通过设置系统属性来更改默认级别:
中setprop log.tag.<YOUR_LOG_TAG> <LEVEL>
。您还可以创建一个local.prop
文件,其中包含以下内容:log.tag.<YOUR_LOG_TAG>=<LEVEL>
并将其放在/data/local.prop
。
编辑2
我已经这样做了(根设备,将local.prop文件推送到/ data并重新启动)但是标签仍然出现
答案 0 :(得分:7)
我可以通过检查android源代码(2.3.x)来看到以下内容:
执行
shell setprop log.tag.XYZ
在此处不起作用(frameworks/base/core/jni/android_hardware_Camera.cpp
),因为正在使用LOGV()
宏进行日志记录。此日志记录方法不使用属性来检测某个组件是否希望禁用日志记录。这就是我能够通过android代码跟踪调用。
因此,使用setprop(...)
无法用于禁用来自Android系统组件的日志记录,但是当日志来自用Java编写的用户应用程序等时,它应该有效,这些应用程序使用base/core/java/android/util/Log.java
和frameworks/base/core/jni/android_util_Log.cpp
记录。我的猜测是android_util_Log_isLoggable()
是用于过滤的内容。
恕我直言,除了您的设备的源代码构建和禁用您正在使用的相机代码中的LOGV
宏之外,别无其他选择。
答案 1 :(得分:1)
您可以尝试adb shell setprop log.tag.Camera-JNI ERROR
之类的内容。如果它不起作用,只需过滤日志或将其转储到文件并使用grep查找您感兴趣的行或使用grep -v Camera-JNI
过滤掉相机。
答案 2 :(得分:0)
如果您想查看特定标签,请使用:
logcat -s YourTag:* SecondTag:* ThirdTag:* ...
您也可以使用adb logcat
只需指定<TAG>:*
次,即可过滤所需的标记。
示例: adb logcat -s AndroidRuntime:* MyApp:*
过滤了AndroidRuntime
和MyApp
个标记。因此,您可以看到所有未捕获的异常(崩溃)以及应用程序的所有日志。