Android 的 Event Log

Android 源码 logtags 的位置:

~/work/gdev/frameworks$ find -type f -name *.logtags
./base/packages/SystemUI/src/com/android/systemui/EventLogTags.logtags
./base/packages/SettingsProvider/src/com/android/providers/settings/EventLogTags.logtags
./base/services/core/java/com/android/server/EventLogTags.logtags
./base/services/core/java/com/android/server/am/EventLogTags.logtags
./base/core/java/com/android/internal/logging/EventLogTags.logtags
./base/core/java/android/speech/tts/EventLogTags.logtags
./base/core/java/android/webkit/EventLogTags.logtags
./base/core/java/android/content/EventLogTags.logtags
./ex/common/java/com/android/common/GoogleLogTags.logtags
./native/services/surfaceflinger/EventLog/EventLogTags.logtags
./opt/telephony/src/java/com/android/internal/telephony/EventLogTags.logtags

关于 EventLog 的处理代码:

~/work/gdev/frameworks$ find -type f -name EventLog*.java
./base/packages/SystemUI/src/com/android/systemui/EventLogConstants.java
./base/core/java/android/speech/tts/EventLoggerV1.java
./base/core/java/android/util/EventLog.java
./base/core/java/android/util/EventLogTags.java

在 EventLog.java 第一行就定义了 tags 文件位置:

private static final String TAGS_FILE = "/system/etc/event-log-tags";

文件开头有一段注释:

/**
 * Access to the system diagnostic event record.  System diagnostic events are
 * used to record certain system-level events (such as garbage collection,
 * activity manager state, system watchdogs, and other low level activity),
 * which may be automatically collected and analyzed during system development.
 *
 * <p>This is <b>not</b> the main "logcat" debugging log ({@link android.util.Log})!
 * These diagnostic events are for system integrators, not application authors.
 *
 * <p>Events use integer tag codes corresponding to /system/etc/event-log-tags.
 * They carry a payload of one or more int, long, or String values.  The
 * event-log-tags file defines the payload contents for each type code.
 */

可以查找 EventLog 字符串来寻找 EventLog 的调用地方,比如 frameworks/base/core/java/android/app/ActivityThread.java:

public final class ActivityThread {
    ............
    private static final int LOG_AM_ON_PAUSE_CALLED = 30021;
    private static final int LOG_AM_ON_RESUME_CALLED = 30022;

    ........................

    final Bundle performPauseActivity(ActivityClientRecord r, boolean finished,
            boolean saveState) {

   ..............

            mInstrumentation.callActivityOnPause(r.activity);
            EventLog.writeEvent(LOG_AM_ON_PAUSE_CALLED, UserHandle.myUserId(),
                    r.activity.getComponentName().getClassName());

   .................

}

EventLog 根据 "/system/etc/event-log-tags" 定义的对应关系写入 logcat, 比如 LOG_AM_ON_PAUSE_CALLED 30022 对应的是。

p15v57c2k:/ # cat /system/etc/event-log-tags | grep 30022
30022 am_on_resume_called (User|1|5),(Component Name|3),(Reason|3)   


在 frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java 找到 EventLogTags.writeAmMeminfo。

但是这个  EventLogTags 类是编译时生成的:

out/target/common/obj/JAVA_LIBRARIES/services_intermediates/src/core/java/com/android/server/am/EventLogTags.java


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值