为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Android中启用/禁用日志级别?

如何在Android中启用/禁用日志级别?

慕姐4208626 2019-07-12 16:21:50
如何在Android中启用/禁用日志级别?例如,我有很多日志语句要调试。Log.v(TAG, "Message here"); Log.w(TAG, " WARNING HERE");在设备电话上部署此应用程序时,我希望从可以启用/禁用日志记录的地方关闭详细的日志记录。
查看完整描述

3 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

一种常见的方法是创建一个名为loglevel的int,并根据loglevel定义其调试级别。

public static int LOGLEVEL = 2;public static boolean ERROR = LOGLEVEL > 0;
public static boolean WARN = LOGLEVEL > 1;...public static boolean VERBOSE = LOGLEVEL > 4;

    if (VERBOSE) Log.v(TAG, "Message here"); // Won't be shown
    if (WARN) Log.w(TAG, "WARNING HERE");    // Still goes through

稍后,只需更改所有调试输出级别的LOGLEVEL即可。


查看完整回答
反对 回复 2019-07-12
?
潇湘沐

TA贡献1816条经验 获得超6个赞

这个Android文档显示了关于日志级别的以下内容:

除非在开发期间,否则不应该将详细的内容编译到应用程序中。调试日志在运行时编译,但在运行时剥离。始终保存错误、警告和信息日志。

因此,您可能需要考虑删除日志详细日志语句,可能按照另一个答案中的建议使用ProGuard.

根据文档,您可以使用SystemProperties在开发设备上配置日志记录。要设置的属性是log.tag.<YourTag>它应该设置为以下值之一:VERBOSEDEBUGINFOWARNERRORASSERT,或SUPPRESS有关此问题的更多信息,请参见isLoggable()方法。

属性临时设置属性。setprop命令。例如:

C:\android>adb shell setprop log.tag.MyAppTag WARN
C:\android>adb shell getprop log.tag.MyAppTagWARN

或者,您也可以将它们指定在文件‘/data/local.port’中,如下所示:

log.tag.MyAppTag=WARN

Android的后期版本似乎需要只读取/data/local.prop..这个文件是在启动时读取的,所以您需要在更新它之后重新启动它。如果/data/local.prop是可以写的,很可能会被忽略。

最后,可以使用System.setProperty()方法.


查看完整回答
反对 回复 2019-07-12
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

最简单的方法可能是运行编译好的JAR。ProGuard在部署之前,配置如下:

-assumenosideeffects class android.util.Log {
    public static int v(...);}

这将-除了所有其他ProGuard优化之外-直接从字节码中删除所有冗长的日志语句。


查看完整回答
反对 回复 2019-07-12
  • 3 回答
  • 0 关注
  • 1428 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信