sea*_*hea 25 logging android nexus-one
我在配置Android日志时遇到了一些困难.这是我的代码的样子:
if (Log.isLoggable("MY_TAG", Log.VERBOSE)) {
Log.v("MY_TAG", "Here's a log message");
}
Run Code Online (Sandbox Code Playgroud)
很简单吧?
但是,我在Log.isLoggable("MY_TAG", Log.VERBOSE)返回true时遇到了很多困难.
根据http://developer.android.com/reference/android/util/Log.html,我尝试将local.prop文件添加到/ data /目录,如下所示:
log.tag.MY_TAG=VERBOSE
Run Code Online (Sandbox Code Playgroud)
但没有运气.我也尝试过:
System.setProperty("log.tag.MY_TAG", String.valueOf(Log.VERBOSE));
Run Code Online (Sandbox Code Playgroud)
但这也不起作用.
关于我在这里做错了什么的想法?我在Nexus 1上运行Android 2.1-update1,如果这有任何区别的话.
Emm*_*uel 30
尝试
adb shell setprop log.tag.MyAppTag VERBOSE
Run Code Online (Sandbox Code Playgroud)
ped*_*hdz 22
似乎Android的更高版本/data/local.prop只能由root写入.该adb push命令似乎最初创建文件,授予每个人读/写访问权限(因为默认文件掩码是777).明智地,Android会忽略,/data/local.prop因为这可能会带来安全风险.
我只尝试过Android 2.3.3和4.1.2.前者没有阅读local.prop世界可写的问题,而后者似乎默默地忽略了文件的内容.
local.prop按照原始问题中的描述创建文件:
log.tag.MY_TAG=VERBOSE
Run Code Online (Sandbox Code Playgroud)
然后按如下方式将其推送到设备上似乎可以解决问题:
adb push local.prop /data/local.prop
adb shell chmod 644 /data/local.prop
adb shell chown root.root /data/local.prop
adb reboot
Run Code Online (Sandbox Code Playgroud)
您可以仔细检查以确保local.prop通过执行以下内容读取值:
adb shell getprop | grep log.tag
Run Code Online (Sandbox Code Playgroud)
总结如下:
/data/local.prop 仅在引导期间读取./data/local.prop必须正确设置文件的权限,否则将无法读取.该文件必须只能由root写入.使用adb shell setprop log.tag.MyAppTag VERBOSE也工作.问题是重启后属性值会丢失.
一个重要的目标是不发布生产应用程序,其中包含大量的日志调用,增加其大小,甚至甚至可能影响其性能.
为此,我的建议是将这些常量放在每个将要进行日志调用的类的顶部:
static final boolean DEBUG = false;
static final String TAG = "<MyClass>"
Run Code Online (Sandbox Code Playgroud)
现在您在哪里记录,执行以下操作:
if (DEBUG) Log.v(TAG, "Something");
Run Code Online (Sandbox Code Playgroud)
通过将DEBUG常量更改为true来打开日志.(如果你愿意,你可以让一个类使用这些静态代码来使用所有应用程序的代码......这对于一个小应用程序来说是有意义的,但随着事情变得越来越大,最好决定哪些部分可以开启登录.)
通过这样做,当您使用构建应用程序时DEBUG = false,您的所有日志记录代码不仅不会被执行,而且会完全脱离您的应用程序.这很好,因为它允许您在代码中保留相当广泛的日志记录,以便在需要时打开,而不必担心这将如何影响您的运送应用程序的大小.基本上只需将日志放在任何需要它们的地方,并且不用担心让它们进入.
这是很多Android框架所采用的方法.例如,Activity ManagerService.
这个常量位于顶部,各种日志线基于它们分散.(以及它的各个方面的一堆其他子调试常量,因为这个文件非常愚蠢.)
| 归档时间: |
|
| 查看次数: |
21476 次 |
| 最近记录: |