Logcat 不会显示 Log.d 消息
Posted
技术标签:
【中文标题】Logcat 不会显示 Log.d 消息【英文标题】:Logcat won't display Log.d messages 【发布时间】:2013-07-28 07:06:53 【问题描述】:我正在开发一个 android 应用程序,我希望在我的代码运行时有一些方法来打印调试语句。对我来说幸运的是,当我在 Android 2.3.3 (API 10) 模拟器上运行我的应用程序时,Logcat 能够打印出 Log.d 消息。
但是,当我在物理设备(Samsung Galaxy S4 Android 4.2.2)上测试相同的应用程序时,除了 dalvikvm 和 AndroidRuntime 消息之外,我什么也看不到。
com.android.internal.os.RuntimeInit <<<<<<
07-28 04:49:24.165: DEBUG/AndroidRuntime(6378): CheckJNI is OFF
07-28 04:49:24.165: DEBUG/AndroidRuntime(6378): setted country_code = USA
07-28 04:49:24.165: DEBUG/AndroidRuntime(6378): setted countryiso_code = US
07-28 04:49:24.175: DEBUG/AndroidRuntime(6378): setted sales_code = VZW
07-28 04:49:24.175: DEBUG/AndroidRuntime(6378): readGMSProperty: start
07-28 04:49:24.175: DEBUG/AndroidRuntime(6378): readGMSProperty: already setted!!
07-28 04:49:24.175: DEBUG/AndroidRuntime(6378): readGMSProperty: end
07-28 04:49:24.175: DEBUG/AndroidRuntime(6378): addProductProperty: start
07-28 04:49:24.185: DEBUG/dalvikvm(6378): Trying to load lib libjavacore.so 0x0
07-28 04:49:24.185: DEBUG/dalvikvm(6378): Added shared lib libjavacore.so 0x0
07-28 04:49:24.195: DEBUG/dalvikvm(6378): Trying to load lib libnativehelper.so 0x0
07-28 04:49:24.195: DEBUG/dalvikvm(6378): Added shared lib libnativehelper.so 0x0
07-28 04:49:24.385: DEBUG/AndroidRuntime(6378): Calling main entry com.android.commands.pm.Pm
07-28 04:49:26.978: DEBUG/AndroidRuntime(6378): Shutting down VM
07-28 04:49:26.988: DEBUG/dalvikvm(6378): GC_CONCURRENT freed 157K, 21% free 627K/788K, paused 1ms+0ms, total 4ms
07-28 04:49:26.988: DEBUG/jdwp(6378): Got wake-up signal, bailing out of select
07-28 04:49:26.988: DEBUG/dalvikvm(6378): Debugger has detached; object registry had 1 entries
07-28 04:49:27.458: DEBUG/AndroidRuntime(6420): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
07-28 04:49:27.458: DEBUG/AndroidRuntime(6420): CheckJNI is OFF
07-28 04:49:27.458: DEBUG/AndroidRuntime(6420): setted country_code = USA
07-28 04:49:27.458: DEBUG/AndroidRuntime(6420): setted countryiso_code = US
07-28 04:49:27.458: DEBUG/AndroidRuntime(6420): setted sales_code = VZW
07-28 04:49:27.458: DEBUG/AndroidRuntime(6420): readGMSProperty: start
07-28 04:49:27.458: DEBUG/AndroidRuntime(6420): readGMSProperty: already setted!!
07-28 04:49:27.458: DEBUG/AndroidRuntime(6420): readGMSProperty: end
07-28 04:49:27.458: DEBUG/AndroidRuntime(6420): addProductProperty: start
07-28 04:49:27.468: DEBUG/dalvikvm(6420): Trying to load lib libjavacore.so 0x0
07-28 04:49:27.478: DEBUG/dalvikvm(6420): Added shared lib libjavacore.so 0x0
07-28 04:49:27.478: DEBUG/dalvikvm(6420): Trying to load lib libnativehelper.so 0x0
07-28 04:49:27.478: DEBUG/dalvikvm(6420): Added shared lib libnativehelper.so 0x0
07-28 04:49:27.649: DEBUG/AndroidRuntime(6420): Calling main entry com.android.commands.am.Am
07-28 04:49:27.659: DEBUG/dalvikvm(6420): Note: class Landroid/app/ActivityManagerNative; has 169 unimplemented (abstract) methods
07-28 04:49:27.719: DEBUG/AndroidRuntime(6420): Shutting down VM
07-28 04:49:27.729: DEBUG/dalvikvm(6420): GC_CONCURRENT freed 157K, 20% free 666K/828K, paused 0ms+1ms, total 3ms
07-28 04:49:27.729: DEBUG/jdwp(6420): Got wake-up signal, bailing out of select
07-28 04:49:27.729: DEBUG/dalvikvm(6420): Debugger has detached; object registry had 1 entries
我不确定发生了什么,因为 Logcat 正确地针对我的物理设备,它显示在 adb 设备上,并且 USB 调试已打开。
我尝试过使用 Log.e,但这对输出没有影响。
我什至在 AndroidManifest.xml 中设置了 android:debuggable="true"。
这里有什么我遗漏的吗?为什么在我的物理设备上运行我的应用程序时,Logcat 不会显示我的调试消息?
编辑:我在 Android 4.2.2 模拟器上尝试了相同的应用程序,Logcat 在模拟器上按预期工作,但通过 USB 设备使用 Logcat 仍然存在问题。我发布的块不是普通 Logcat 打印输出的冗长,而是我在 Verbose 日志级别上看到的唯一内容。
【问题讨论】:
你能给我们一个例子,你是如何定义登录代码的?另外,您是否在 4.2.2 的模拟器上对其进行了测试? 你在 logcat 上有过滤器吗?您使用哪个 IDE? @Opiatefuchs 从 android.util.Log 导入了 Log,我像Log.d(TAG, "Debug message here");
@Simon 一样使用它,我在 logcat 上没有过滤器——这是 Logcat 的整个输出。我使用 IntelliJ IDEA 12.1.4。
你是怎么解决的?我也面临同样的问题。
@Hasandroid 看到我的回答,我设法解决了这个问题。
【参考方案1】:
这可能是因为某些手机禁用了日志以提高性能。
例如,我的手机HUAWEI P9 lite,我必须执行以下步骤才能使Log.d
工作:
-
拨*#*#2846579#*#*
号码可能会有所不同,您应该搜索一下手机的密码。
来
ProjectMenu
页面
点击Background Settings
点击LOG Settings
检查AP Log
。
不知什么原因,重新打开时自动检查所有日志LOG Settings
。
[更新]
刚才我从 git 拉出来后又发生了,adb shell
显示了这个:
open '/dev/hwlog_switch' fail -1, 13. Permission denied
log switch off, only log_main and log_events will have logs!
我用新项目测试并得到日志,只有这个旧项目有问题。我尝试重建应用程序,重新启用上述日志步骤,甚至重新启动手机,但仍然没有运气。
然后我卸载手机中的应用程序(或所有相关的productFlavors
应用程序)并重新安装,日志又回来了。
【讨论】:
以前不知道的非常有用的信息。谢谢。 你就是男人!我花了几个小时试图弄清楚为什么我没有看到任何调试日志。我能找到的只是关于如何在 android studio 中更改 logcat 中的日志级别的说明。 这段代码允许我使用 log.wtf 但不能使用 log.d。对我来说足够了 S9:开发者选项 -> “日志输出级别”就是你要找的 老实说你帮了我,我有华为 p8 lite,密码是一样的。 20 天内合同将终止,所以我需要选择新手机,有什么建议:D?【参考方案2】:在某些型号上,您必须转到开发人员选项,然后在“高级日志记录”上选择“全部允许”。
以下截图来自我的魅族 MX 4 Pro:
【讨论】:
魅族 MX4 和 Flyme 6.1.0.0 需要进入开发者选项 -> 性能优化 -> 高级日志;我花了很长时间才找到它...... 魅族m2(Flyme 6.1.0.0G)太开发者选项->性能优化->高级日志->设置“全部允许” 对魅族6 pro plus有帮助。【参考方案3】:您是否为 logcat 启用了 USB 调试? (如果您的物理设备是通过 USB 电缆连接的)。转到“设置”,然后是“应用程序”,然后是“开发”,然后检查“USB调试”。
然后它应该出现在 DDMS 中。只需选择它即可调试/查看日志。
【讨论】:
我确实启用了 USB 调试,并且我的设备确实显示在 DDMS 中。唯一的问题是弹出的日志正是我在问题中发布的。【参考方案4】:今天,我遇到了同样的问题。没有任何解决方案对我有用。但是对我有用的是图片中提到的底部的 Android Studio 右侧。选择图像中提到的选项。之后,一切都按预期工作。现在发布我的解决方案可能对其他人有所帮助。
希望对他人有所帮助
【讨论】:
【参考方案5】:也许不是答案,但需要显示图片。尝试像这样为您的 TAG 设置过滤器:
并选择详细选项:
这有帮助吗?
【讨论】:
感谢您发布图片,但我在 Intellij IDEA 中做了相同的操作,过滤器什么也没显示。【参考方案6】:您需要通过 adb shell 设置日志记录(到所需的级别),如下所示:
-
导航到您的 android sdk 文件夹中的平台工具。
对于 linux/mac/windows powershell 使用
./adb shell
打开 adb shell,对于 windows cmd 使用 adb shell
。
发出以下命令:
stop
setprop log.tag.MYTAG VERBOSE
start
【讨论】:
以上是关于Logcat 不会显示 Log.d 消息的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse LogCat 显示系统消息但不显示测试我的应用程序的消息