设置Android日志级别

Dav*_*ell 9 android

是否可以在未植根的设备上设置日志级别?所以我想以某种方式更改设备日志级别以"调试".这是可以做到的吗?

因为它没有扎根我不认为setprop会起作用.我也无法更改local.prop文件,因为我没有权限这样做.

除了可能很幸运,找到一个隐藏的菜单,其中包含日志级别.有没有办法让我以其他方式提高日志级别?

谢谢您的帮助.

zap*_*apl 12

setprop:

  • 在您重启设备之前是暂时的,即使在root电话上也是如此.
  • 您可以通过重新启动来保留属性,如果您将其写入local.prop只能在root电话上.
  • 某些属性是只读的,只有在更改某些init文件时才能更改.在root手机上甚至可能是不可能的.
  • 每个设备(或固件)可以具有不同的属性集.有根电话不会自动更多.

记录等级:

  • 如果打印日志的代码表示Log.d()它将处于"调试"级别,除非您更改代码并重新编译,否则无法更改.如果执行Log.?不管级别,则没有任何内容可以隐藏日志消息.
  • 如果您拥有固件版本,Android框架会隐藏一些日志消息.要显示那些需要重新编译固件作为调试版本的内容.没有机会让那些在根电话上显示.
  • 一些消息由代码中的局部变量控制,例如if (LOCAL_LOGV) Log.v(...- 您需要在此处更改代码以查看这些代码.
  • 某些消息由Config.LOGV(=始终false)控制,请参阅配置.也无法在这里改变破碎的行为.你需要重新编译.
  • 在启用属性之前,会隐藏其他一些logmessages:

public static final boolean DEBUG_SQL_CACHE =
Log.isLoggable("SQLiteCompiledSql", Log.VERBOSE); 

// somewhere in code
if (SQLiteDebug.DEBUG_SQL_CACHE) {
    Log.d(TAG, "secret message!");
}
Run Code Online (Sandbox Code Playgroud)

如果你这样做,adb shell setprop log.tag.SQLiteCompiledSql VERBOSE你应该看到这些消息弹出.日志#isLoggable()

我不知道没有全局loglevel.