使用aLogcat访问Jelly Bean上的消息日志时出现问题


12

摘要

我在使用aLogcat访问K9日志消息时遇到了问题,有关更多详细信息,请参见下文。我想知道的是:

  • 为什么K9的日志消息没有出现在aLogcat日志查看器中?
  • 在尝试同步K9文件夹时,有人对我如何看到正在发生的错误的全文有任何建议吗?
  • 果冻豆(Jelly Bean)中是否发生了某些更改,导致K9的日志记录停止工作?
  • 由于aLogcat通常显示的消息很少,因此Jelly Bean发生了一些变化,这可能意味着它不再能够访问所有消息?

详情

我最近在K9上遇到连接问题。我的文件夹无法同步,并且文件夹列表最终充满了套接字错误(libcore.io.ErrnoException:)或ssl错误(javex.net.ssl.SSLException:)等,这些错误应该是上次检查的时间。根据当时发生的问题,我会收到不同的消息,但是我看不到错误消息的全文,因此很难猜测可能是什么原因。

考虑到日志文件可能包含更多信息,我按照“ 记录调试日志”中的说明进行操作,在K9中启用了调试日志,安装了aLogcat并尝试查看日志。不幸的是,无论我选择哪个日志缓冲区(MainEventsRadio),似乎都没有来自K9的消息。

如果添加建议的(k9|AndroidRuntime)正则表达式过滤器,则任何日志中看不到任何内容。如果将其删除,则Main大部分包含垃圾回收消息,Event似乎大部分包含来自aLogcat本身的消息,而我还没有在Radio中看到日志消息。

如果有什么不同,我使用的是Nexus 7,但我会认为日志记录会一直到标准位置,而在Android版本之间不会更改。

Answers:


24

在尝试同步K9文件夹时,有人对我如何看到正在发生的错误的全文有任何建议吗?

这似乎是没有办法看到这些日志信息在设备上根的访问,但如果你有root权限,有一对夫妇的选择,无论是授予所需的权限,以aLogcat或考虑使用一个可怕的黑客TM到视图他们直接。

通过以下方式查看PC或工作站上的日志文件 adb

如果可以将Android设备连接到PC或工作站,则可以通过adb命令访问日志。

要做到这一点在Windows上,首先你需要安装的Android SDK(这将需要的Java SE SDK),并添加android-sdk\toolsandroid-sdk\platform-tools系统路径。然后在您的Nexus 7启用USB调试,通过USB插入,并安装Android的综合亚行界面android-sdk\extras\google\usb_driver(我不得不强制Windows XP到这里看看,就不会找到驱动程序在它自己的)。

有关如何在adb没有完整安装Android SDK的情况下或在Mac或Linux计算机上启动和运行的详细信息,请参见Izzy对“ 是否需要最小化ADB安装?” 的出色回答

然后,您可以打开一个外壳(即cmd窗口)并运行以下命令:

adb logcat k9:V *:S AndroidRuntime:E
  • 我已经确认这可以在我的非根Nexus 7上使用。

aLogcat授予权限

如果您具有root用户访问权限,则可以考虑将READ_LOGS权限授予aLogcat,如本文中所建议的aLogcat / CatLog / Lumberjack无法正常工作?xda-developers论坛执行此操作

pm grant <pkg> android.permission.READ_LOGS

要向alogcat或授予此权限alogcat.donate,您将使用以下命令之一,具体取决于您是否运行捐赠版本:

pm grant org.jtb.alogcat.donate android.permission.READ_LOGS
pm grant org.jtb.alogcat android.permission.READ_LOGS

根据关于android-developers票证的一篇文章,权限授予在重新启动和更新后仍然有效,但不能卸载/重新安装。

遗憾的是,由于这需要root用户访问权限,因此无论是在设备上还是在PC上(由前缀adb shell)运行,我都只会收到错误消息:

Neither user 12345 nor current process has android.permission.GRANT_REVOKE_PERMISSION
  • 由于我的Nexus 7尚未扎根,因此我无法确认这是否可行。

考虑使用可怕的骇客TM

如果您具有root用户访问权限,则可以考虑将logcat setuid设置为root用户并从设备外壳运行logcat,如我对如何在没有root用户访问权限的情况下如何在Nexus 7上访问android日志文件的回答所建议的那样题:

chmod 04755 /system/bin/logcat
logcat k9:V *:S AndroidRuntime:E
  • 再次重申,鉴于安全隐患,我无法确认这是否可行,并且我可能只会将其作为最后的选择

为什么K9的日志消息没有出现在aLogcat日志查看器中?

果冻豆(Jelly Bean)中是否发生了某些更改,导致K9的日志记录停止工作?

由于aLogcat通常显示的消息很少,因此Jelly Bean发生了一些变化,这可能意味着它不再能够访问所有消息?

这似乎是Jelly Bean中的更改,它影响了所有可能尝试读取日志文件的应用程序。

显然,未授予Jelly Bean中的第三方应用程序READ_LOGS权限。由于此链接似乎不可靠:

今天,在将应用程序发布到Google Play之前,我已经在最新的(api 16)模拟器上对其进行了测试。事实证明,Android现在拒绝向第三方应用程序授予此权限。这很奇怪,因为我浏览了Jelly Bean记录的所有更改,找不到任何提及READ_LOGS权限的内容。

然后

READ_LOGS的保护级别现在为“签名|系统|开发”。protectionLevel的新管道语法也未记录(请参阅http://code.google.com/p/android/issues/detail?id=34785)。

我的怀疑是,aLogcat只看到由它本身和vm生成的消息。

有关更多信息,请参阅问题的流程解答我希望我的Jelly Bean系统日志文件有多活跃?


IIRC adb logcat仍然能够在Jelly Bean上获取完整的android登录。
流动

它不需要root,但是您需要在设备上启用adb(通常在开发人员选项下)。
2012年

@Flow-我现在已经确认可以adb logcat从那里使用PC查看日志,并已相应更新了我的答案。令人沮丧的是,没有设备本身的root用户访问权限,我找不到任何方法来访问日志。
Mark Booth

非root用户无法访问完整的系统日志,这是JB日志更改的全部要点。
流程

@Flow-是的,日志消息的全部目的是您可以使用它们来查找正在发生的情况。JB使像aLogcat这样的应用程序变得毫无意义,因为它现在只能访问自己创建的日志消息!
Mark Booth

0

当我的邮件服务器更新它的SSL证书时,我已经在K9中看到这种行为。解决方法是长按帐户,选择Account settings -> Fetching mail -> Incoming server并仅Next浏览页面以确认设置,直到弹出有关证书的弹出窗口(如果证书一切正常,我的虚拟主机错误,则可能不会出现)。确认证书,然后完成其余设置,您的帐户应该开始工作。


@MarkBooth也许您应该问过,我们通常更喜欢不以解决方案为前提的问题。
马修(Matthew)

@MatthewRead我必须在这里同意Mark的观点:他的摘要中的4个项目明确声明他需要日志记录方面的帮助,并且我在这里也看不到“ XY问题”(预设解决方案)。K9显然只是一个例子-但也许应该对问题标题进行以下划线:“使用logcat来确定问题的原因”会更好地匹配(并重点关注);)
Izzy

@MarkBooth Yepp,tnx-现在更加清晰了。还要tnx以获得详细答案!请让我们了解您的进度。
伊兹

我应该删除我的答案,因为它在编辑后完全脱离主题并且容易被否决吗?
onik 2012年

由您自己决定。就像我最初说的,我非常感谢您抽出宝贵的时间发布答案,但是现在,我已经更新了问题,您的答案显得格格不入。我想您总是可以等待,看看它是否在-3以下被投票,以便您可以收集自己的同伴压力徽章。* 8')
Mark Booth 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.