浅谈Android的日志机制:Log和logcat

  • 时间:
  • 浏览:1
  • 来源:5分快乐8-5分快乐8平台_5分快乐8网投平台

感谢IT之家外国网友见面见面 東京特許許可局局長的原创投稿

注:测试设备Android版本为7.1。

一、日志的概况,Android自带终端的使用和初次使用logcat

要对应用任务管理器进行调试,记录日志是最常见快捷的妙招。日志还还要清楚地展现出应用的运行具体情况。从而给任务管理器员提供修正和改进的建议。

(Windows事件管理器中的Windows系统日志)

和Windows一样,在Android系统中也提供了类事的日志记录机制。只不过与Windows不同,在Android中并没法 明显的还还要查看日志的入口。其实Android中不可能 内置了查看日志的工具,只不过亲戚亲戚亲们还要比较特殊的手段召唤它出来。

(打开开发者选项,打开本地终端的开关)

(打开启动器界面中新增的“终端”图标)

当然,除了以上面式。对于一些基于Android淬硬层 优化的ROM,本选项被阉割时,还还要下载第三方终端模拟器类应用。

(这是一个多多多 第三方Terminal应用)

(在黑色界面中输入logcat,回车执行)

1. logcat  

二、logcat概况、日志格式、logcat完整篇 用法、还有MatLog

logcat是Android中用来查看日志的命令行工具(Log Catcher),由图可知,logcat以

1. --------- beginning of xxx 

为起点,以前刚现在开使捕捉Android日志。xxx对应这存储着Android日志记录器的环形缓冲区。Android系统在运行都不 时刻在2个设备文件中的一个多多多 中写入字符串。而这2个设备文件指向2个环形缓冲区。这是Android日志的记录原理。而这2个缓冲区合称日志记录器缓冲区。

(打开开发者选项,还还要看多有个选项叫做“日志记录器缓冲区大小”,默认是256K。由上文所述,日志是循环写入环形缓冲区的。在通常具体情况下,写满时最旧的日志会被删除以给新输出的日志留内存空间。设置的越大就还还要保存离当前时间越久远的日志。但相对地,设置的越大对内存的占用也越大,内存的可用空间也越少,请酌情修改)

默认输出的日志格式如下文所示:(不带任何参数的logcat命令)

1. 07-22 20:31:21.565   993  1032 W BroadcastQueue: Background execution not allowed: receiving Intent { act=com.tencent.mm.plugin.openapi.Intent.ACTION_HANDLE_APP_REGISTER flg=0x10 (has extras) } to com.tencent.mm/.plugin.base.stub.WXEntryActivity$EntryReceiver  

由六每种组成:

1. 写下日志时的时间,如上中07-22 20:31:21.565。

2. PID(任务管理器ID),如上中993。

3. TID(任务管理器ID),如上中1032。

4. 优先级,在Android中,日志的优先级从低到高分以下几种:

  • V—Verbose(啰嗦,最低级别,开发调试中的一些完整篇 信息,仅在开发中使用,不可在发布产品中输出,都不 很常见,包含 诸如妙招名,变量值类事的信息)

  • D—Debug(调试,用于调试的信息,还还要在发布产品中关闭,比较常见,开发中老要 选泽输出此种级别的日志,有时在beta版应用中再次出现)

  • I—Info(信息,该等级日志显示运行具体情况信息,可在产品再次出现问題时提供帮助,从该级别以前刚现在开使的日志通常包含 完整篇 意义的英语句子和调试信息,是最常见的日志级别)

  • W—Warning(警告,运行再次出现异常即将位于错误或表明已位于非致命性错误,该级别日志通常显示出执行过程中的意外具体情况,类事将try-catch句子块中的异常打印堆栈轨迹以前可输出此种级别日志)

  • E—Error(错误,不可能 再次出现可影响运行的错误,比如应用crash时输出的日志)

  • F—Fatal(严重错误,比error级别更高,目前我只在android系统内核发出的日志中看多此种级别。在Android6.0以前表明开发者认为绝对不应该再次出现的错误,在此以前一般开发场景下绝不应该输出此种级别的日志)

  • S—Silent(寂静,最高级别,没法 一条日志会属于一些级别,仅仅作为关闭logcat输出的过滤器参数)

示例中日志等级显示为W,表示警告级别。

5. 标签,标明日志发起者和方便日志的过滤筛选,如上中BroadcastQueue,表示该日志关于广播队列。

6. 正文,本日志的主体内容。示例日志中表示一个多多多 后台执行被阻止,并显示出了接收到的意图的完整篇 信息。

在以前的操作中,日志一些输出了几段就暂停了输出。其其实非root的系统权限下,logcat没法 够输出当前应用动作引起的日志(这里是指终端应用)。不可能 想获取全局日志,还要在root权限下获取,所以。。。

1. kenzo:/ $ su  

2. kenzo:/ # logcat  

输入su回车以前再输入logcat回车,输出的全局日志看起来像流水一样,只不过不可能 新日志的不断输出,方向是向上流的。

logcat的使用姿势很充足。用法如下:

logcat [选项] [过滤器]?

选项:

-s <过滤器>设置过滤器,后加过滤器,多个过滤器用逗号分隔。若其后不加过滤器。等效于"-s *:S",不输出日志。

除了方便查看日志的MatLog之外,这里再介绍一个多多多 应用叫LiveBoot。一些应用还还要将开机时正式进入系统前,还在播放开机动画时,就将日志显示在屏幕上。一些功能最大的好处一些当系统长期播放开机动画时,通过显示出的日志还还要判断系统是在建立虚拟机缓存(比如在Recovery中清除Cache和Dalvik/ART Cache了以前的重启)还是变成了bootloop软砖。(永久开机动画循环)

(应用界面,还还要看多一些应用的作者是大名鼎鼎的谁)

(开机效果,看起来很装逼都不 吗)

一些工具还要root权限支持。一些并都不 都支持所有非类原生ROM,都不 稍微拖慢开机时间。不过想到在疑似系统故障的以前真不知道系统到底是好是坏的忐忑心情,这点小瑕疵算得了哪些地方?

四、免root获取全局日志,Flyme6获取真正全局日志的妙招

以前一些过,要想获取全局日志,还要要在root权限下执行logcat要能达到目的。原来做的目的是为了保护用户隐私信息。(亲戚亲戚亲们不可能 闲着没事句子,打开MatLog,不可能 懂点英句子子看看正在输出的日志会透露出2个用户隐私。不可能 正常使用设备一段时间后再用logcat导出日志到文件查看,原来显示出的用户隐私更多)不过,Google并没法 完整篇 禁止免root查看日志。Android中一个多多多多 权限叫"android.permission.READ_LOGS"。从字面意思上看一些读取日志时使用的权限。一些权限默认不授予给第三方应用,不可能 要我将一些权限授予给第三方应用。还还要使用在电脑上安装ADB和相关驱动。在Android设备上打开USB调试权限。(adb亲戚亲戚亲们都太熟悉吧)。一些输入以下命令。

1. adb shell pm grant <要授权的应用包名> android.permission.READ_LOGS  

正常的具体情况下。执行完即退出,不要输出任何字符。第三方应用在授权以前重新启动,通过使用shell召唤logcat,即使在非root权限下要能获取日志。不可能 再次出现以下错误:

1. Operation not allowed: java.lang.SecurityException: Package <应用包名> has not requested permission android.permission.READ_LOGS  

则表明应用的清单文件(AndroidManifest.xml)中还要上加以下权限:

1. <uses-permission android:name="android.permission.READ_LOGS" />  

一些目标SDK(targetSdkVersion)还要不小于21。

在MIUI上,不可能 都不 再次出现一些错误。

1. Operation not allowed: java.lang.SecurityException: grantRuntimePermission: Neither user 50 nor current process has android.permission.GRANT_RUNTIME_PERMISSIONS.  

其实MIUI默认不允许adb权限更改。不可能 要想允许权限更改。还要打开USB调试的安全设置开关。

注意:还要登录MIUI账号。

不可能 日志四种 的隐私属性。有一些非原生ROM,就是是否是在root权限的logcat也无法完整篇 获取日志。比如说Flyme。这时也还要找深藏的设置开关来外理此问題。

(同样是点击系统版本打开开发者模式)

(设置--辅助功能--开发者选项--性能优化--高级日志输出--完整篇 允许)

不同的xxOS,XXUI有不同的妙招,请亲戚亲戚亲们自行查找。

五、总结

总的来说,这篇文章,也一些围绕着“Android日志”一些主题讲了一些东西。不过人及所有感觉最好的每种还是在logcat的完整篇 介绍中。(毕竟这每种我是做得最辛苦的,网上说的太简单了,每一条命令都不 我测试过的。当然,这文章的所有做法我都严格测试过以证明其有效性)当然,这篇文章对于普罗大众来说最大的用处一些知道Android包含 日志一些东西,一些要能查看,导出并使用它。日志中,我认为,尽管一些对于爱好玩机的普罗大众,也包含 着充足的财富。通过查看日志,还还要了解到Android系统中的一些奥秘,一些好奇心被满足的兴奋感绝不亚于小以前拆开机械手表查看其中的齿轮运转所感受到的心情。总之,お楽しみ下さい(请尽情享【shi】受【jian】吧)!谢谢亲戚亲戚亲们!