13

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

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

谢谢你。

编辑

文档是这样的:

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

编辑 2

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

4

3 回答 3

7

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

执行

shell setprop log.tag.XYZ

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

因此 usingsetprop(...)不能用于禁用 android 系统组件的日志记录,但当日志来自用 Java 编写的用户应用程序等时,它应该可以使用base/core/java/android/util/Log.javaframeworks/base/core/jni/android_util_Log.cpp记录。我的猜测是这android_util_Log_isLoggable()就是用来过滤的。

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

于 2012-07-24T12:48:10.930 回答
1

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

于 2012-07-24T03:05:12.597 回答
0

如果您想查看特定标签,请使用:

logcat -s YourTag:* SecondTag:* ThirdTag:* ...

你也可以使用adb logcat

只需指定<TAG>:*要过滤所需标签的次数即可。

示例: adb logcat -s AndroidRuntime:* MyApp:*过滤器AndroidRuntimeMyApp标签。因此,您会看到所有未捕获的异常(崩溃)以及应用程序的所有日志。

于 2015-11-21T12:30:34.100 回答