在Android中禁用本机logcat输出

Fer*_*ego 13 android logcat galaxy

我正在使用三星Galaxy S3设备进行开发,我的应用程序正在使用相机.在logcat中,本机系统有一个输出,其标记Camera-JNI每秒写入logcat 20次,导致logcat非常快速地清理最旧的条目.

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

谢谢.

编辑

文档说明了这一点:

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

编辑2

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

woj*_*iii 7

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

执行

shell setprop log.tag.XYZ
Run Code Online (Sandbox Code Playgroud)

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

因此,使用setprop(...)将无法用于禁用来自Android系统组件的日志记录,但是当日志来自用Java base/core/java/android/util/Log.javaframeworks/base/core/jni/android_util_Log.cpp用于日志记录的Java用户应用程序等时,它应该可用.我的猜测就是android_util_Log_isLoggable()用来过滤的东西.

恕我直言,除了为您的设备构建源代码并禁用LOGV您正在使用的相机代码中的宏之外,我没有其他选择.


Nik*_*kov 1

你可以尝试类似的东西adb shell setprop log.tag.Camera-JNI ERROR。如果它不起作用,只需过滤日志或将其转储到文件中,然后使用 grep 查找您感兴趣的行或使用grep -v Camera-JNI.

  • 好吧,在这种情况下,由于这不是您的代码,因此您实际上无能为力,只能:1)向三星投诉,或 2)安装不执行此操作的自定义 ROM。 (2认同)