转载-Android EventLog含义

10 篇文章 0 订阅

一. 概述

在调试分析Android的过程中,比较常用的地查看EventLog,非常简洁明了地展现当前Activity各种状态,当然不至于此,比如还有window的信息。那么本文就列举以下am相关的tags含义。

本文涉及的源码类有EventLog.java, EventLogTags.java,另外tags格式的定义位于文件/system/etc/event-log-tags

如果在终端输入:

logcat -b events

  
  

那么会输出大量类似这样的信息:


  
  
  1. 06 -01 13 :44 :55.518 7361 8289 I am_create_service: [0,111484394,.StatService,10094,7769]
  2. 06 -01 13 :44 :55.540 7361 8343 I am_proc_bound: [0,3976,com.android.providers.calendar]
  3. 06 -01 13 :44 :55.599 7361 8033 I am_create_service: [0,61349752,.UpdateService,10034,1351]
  4. 06 -01 13 :44 :55.625 7361 7774 I am_destroy_service: [0,61349752,1351]
  5. ...

通过字面意思,就能得到不少信息量,比如am_create_service,创建service,但是后面括号中内容的具体含义,其实有很高的价值。 接下来通过一张表格来展示含义。

二. EventLog

2.1 ActivityManager

Num TagName 格式 功能
30001 am_finish_activity User,Token,TaskID,ComponentName,Reason  
30002 am_task_to_front User,Task  
30003 am_new_intent User,Token,TaskID,ComponentName,Action,MIMEType,URI,Flags  
30004 am_create_task User ,Task ID  
30005 am_create_activity User ,Token ,TaskID ,ComponentName,Action,MIMEType,URI,Flags  
30006 am_restart_activity User ,Token ,TaskID,ComponentName  
30007 am_resume_activity User ,Token ,TaskID,ComponentName  
30008 am_anr User ,pid ,Package Name,Flags ,reason ANR
30009 am_activity_launch_time User ,Token ,ComponentName,time  
30010 am_proc_bound User ,PID ,ProcessName  
30011 am_proc_died User ,PID ,ProcessName  
30012 am_failed_to_pause User ,Token ,Wanting to pause,Currently pausing  
30013 am_pause_activity User ,Token ,ComponentName  
30014 am_proc_start User ,PID ,UID ,ProcessName,Type,Component  
30015 am_proc_bad User ,UID ,ProcessName  
30016 am_proc_good User ,UID ,ProcessName  
30017 am_low_memory NumProcesses Lru
30018 am_destroy_activity User ,Token ,TaskID,ComponentName,Reason  
30019 am_relaunch_resume_activity User ,Token ,TaskID,ComponentName  
30020 am_relaunch_activity User ,Token ,TaskID,ComponentName  
30021 am_on_paused_called User ,ComponentName  
30022 am_on_resume_called User ,ComponentName  
30023 am_kill User ,PID ,ProcessName,OomAdj ,Reason 杀进程
30024 am_broadcast_discard_filter User ,Broadcast ,Action,ReceiverNumber,BroadcastFilter  
30025 am_broadcast_discard_app User ,Broadcast ,Action,ReceiverNumber,App  
30030 am_create_service User ,ServiceRecord ,Name,UID ,PID  
30031 am_destroy_service User ,ServiceRecord ,PID  
30032 am_process_crashed_too_much User ,Name,PID  
30033 am_drop_process PID  
30034 am_service_crashed_too_much User ,Crash Count,ComponentName,PID  
30035 am_schedule_service_restart User ,ComponentName,Time  
30036 am_provider_lost_process User ,Package Name,UID ,Name  
30037 am_process_start_timeout User ,PID ,UID ,ProcessName timeout
30039 am_crash User ,PID ,ProcessName,Flags ,Exception,Message,File,Line Crash
30040 am_wtf User ,PID ,ProcessName,Flags ,Tag,Message Wtf
30041 am_switch_user id  
30042 am_activity_fully_drawn_time User ,Token ,ComponentName,time  
30043 am_focused_activity User ,ComponentName  
30044 am_home_stack_moved User ,To Front ,Top Stack Id ,Focused Stack Id ,Reason  
30045 am_pre_boot User ,Package  
30046 am_meminfo Cached,Free,Zram,Kernel,Native 内存
30047 am_pss Pid, UID, ProcessName, Pss, Uss 进程

下面列举tag可能使用的部分场景:

  • am_low_memory:位于AMS.killAllBackgroundProcesses或者AMS.appDiedLocked,记录当前Lru进程队列长度。
  • am_pss:位于AMS.recordPssSampleLocked(
  • am_meminfo:位于AMS.dumpApplicationMemoryUsage
  • am_proc_start:位于AMS.startProcessLocked,启动进程
  • am_proc_bound:位于AMS.attachApplicationLocked
  • am_kill: 位于ProcessRecord.kill,杀掉进程
  • am_anr: 位于AMS.appNotResponding
  • am_crash:位于AMS.handleApplicationCrashInner
  • am_wtf:位于AMS.handleApplicationWtf
  • am_activity_launch_time:位于ActivityRecord.reportLaunchTimeLocked(),后面两个参数分别是thisTime和 totalTime.
  • am_activity_fully_drawn_time:位于ActivityRecord.reportFullyDrawnLocked, 后面两个参数分别是thisTime和 totalTime
  • am_broadcast_discard_filter:位于BroadcastQueue.logBroadcastReceiverDiscardLocked
  • am_broadcast_discard_app:位于BroadcastQueue.logBroadcastReceiverDiscardLocked

Activity生命周期相关的方法:

  • am_on_resume_called: 位于AT.performResumeActivity
  • am_on_paused_called: 位于AT.performPauseActivity, performDestroyActivity
  • am_resume_activity: 位于AS.resumeTopActivityInnerLocked
  • am_pause_activity: 位于AS.startPausingLocked
  • am_finish_activity: 位于AS.finishActivityLocked, removeHistoryRecordsForAppLocked
  • am_destroy_activity: 位于AS.destroyActivityLocked
  • am_focused_activity: 位于AMS.setFocusedActivityLocked, clearFocusedActivity
  • am_restart_activity: 位于ASS.realStartActivityLocked
  • am_create_activity: 位于ASS.startActivityUncheckedLocked
  • am_new_intent: 位于ASS.startActivityUncheckedLocked
  • am_task_to_front: 位于AS.moveTaskToFrontLocked

2.2 Power

Num TagName 格式 功能
2722 battery_level level, voltage, temperature  
2723 battery_status status,health,present,plugged,technology  
2730 battery_discharge duration, minLevel,maxLevel  
2724 power_sleep_requested wakeLocksCleared 唤醒锁数量
2725 power_screen_broadcast_send wakelockCount  
2726 power_screen_broadcast_done on, broadcastDuration, wakelockCount  
2727 power_screen_broadcast_stop which,wakelockCount 系统还没进入ready状态
2728 power_screen_state offOrOn, becauseOfUser, totalTouchDownTime, touchCycles  
2729 power_partial_wake_state releasedorAcquired, tag  

部分含义:

  • battery_level: [19,3660,352] //剩余电量19%, 电池电压3.66v, 电池温度35.2℃
  • power_screen_state: [0,3,0,0] // 灭屏状态(0), 屏幕超时(3). 当然还有其他设备管理策略(1),其他理由都为用户行为(2)
  • power_screen_state: [1,0,0,0] // 亮屏状态(1)

下面列举tag可能使用的部分场景:

  • power_sleep_requested: 位于PMS.goToSleepNoUpdateLocked
  • power_screen_state:位于Notifer.handleEarlyInteractiveChange, handleLateInteractiveChange

三. EventLog完整语义分析

在源码EventLogTags.java中,有大量类似的定义,那么括号中数字是什么含义呢? (以进程启动为例)


  
  
  1. 30014 am_proc_start (User |1| 5),(PID |1| 5),(UID |1| 5),(Process Name |3),(Type| 3),(Component |3)

am_proc_start之后紧跟着的几个括号,其中括号里的内容格式如下:


  
  
  1. ( <name>|data type[|data unit])
  2. ( <名字>|数据类型[|数据单位])

那么(User|1|5) ==> 名字为User, 数据类型为1,数据单位为5,下面再来看看数据类型数据单位

3.1 数据类型

  • 1: int
  • 2: long
  • 3: string
  • 4: list

数据类型中int和string用得最多.

3.2 数据单位

  • 1: Number of objects(对象个数)
  • 2: Number of bytes(字节数)
  • 3: Number of milliseconds(毫秒)
  • 4: Number of allocations(分配个数)
  • 5: Id
  • 6: Percent(百分比)

3.3 实例解析

有了前面的准备知识,再来完整的看看如下语句:


  
  
  1. am_proc_start (User |1| 5),(PID |1| 5),(UID |1| 5),(Process Name |3),(Type| 3),(Component |3)
  2. am_proc_start: [0,9227,10002,com.android.browser,content provider,com.android.browser/.provider.BrowserProvider2]

含义如下:

进程启动: UserId=0, pid=9227, uid=10002, ProcessName=com.android.browser, 数据类型=ContentProvider, 组件=com.android.browser/.provider.BrowserProvider2

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Eventlog Analyzer日志管理系统、日志分析工具、日志服务器的功能及作用     Eventlog Analyzer是用来分析和审计系统及事件日志的管理软件,能够对全网范围内的主机、服务器、网络设备、数据库以及各种应用服务系统等产生的日志,进行全面收集和细致分析,通过统一的控制台进行实时可视化的呈现。     通过定义日志筛选规则和策略,帮助IT管理员从海量日志数据中精确查找关键有用的事件数据,准确定位网络故障并提前识别安全威胁,从而降低系统宕机时间、提升网络性能、保障企业网络安全。 一、日志管理 保障网络安全 Windows系统日志分析 Syslog日志分析 应用程序日志分析 Windows终端服务器日志监控 Syslog服务器 通用日志解析 & 索引(ULPI)技术 事件日志监控 云设施日志监控 数据库审计 应用程序日志分析 监控和分析应用日志 IIS Web服务器日志分析 IIS FTP服务器日志分析 DHCP Windows应用日志分析 DHCP Linux应用日志分析 MS SQL数据库日志分析 Oracle数据库日志分析 Apache Web服务器日志分析 打印机服务器日志分析 IT合规性审计报表 满足合规性审计需要 合规性审计 PCI合规性报表 ISO 27001合规性报表 FISMA合规性报表 HIPAA合规性报表 SOX合规性报表 GLBA合规性报表 新法规合规性报表 自定义合规性报表 系统与用户监控日志报表 及时了解事件活动 内建报表 自定义报表 微软IIS服务器日志报表 IBM AS/400日志报表 VMware服务器日志报表 活动目录日志报表 特权用户监控报表 用户会话监控 事件日志监控 - 问答报表 历史事件趋势 搜索结果报表 安全信息管理 管理网络安全信息 无代理的采集日志方式 基于代理的采集日志方式 日志搜索 日志分析 日志归档 日志取证 日志导入 用户认证 安全管理服务提供商(MSSP) 适用于MSSP的日志管理方案 操控板与用户视图 个性化界面 安全信息和事件管理(SIEM) 全面保证网络及IT安全 实时事件关联 安全日志管理 服务器日志管理 日志管理 文件完整性监控 安全信息和事件管理(SIEM) 告警与通知 及时发现网络故障问题 实时告警 邮件、短信通知或运行程序 集成第三方工具 扩展管理 EventLog Analyzer API

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值