首页 > 其他分享 >[Android] EventLogTags.logtags简单使用

[Android] EventLogTags.logtags简单使用

时间:2024-01-11 15:34:41浏览次数:26  
标签:logtags EventLogTags static Android com event android

转载来源:https://blog.csdn.net/yfbdxz/article/details/114702144

  1. 用EventLog.writeEvent打的日志(或EventLogTags.java方法打的日志),可以用logcat -b events查看
    frameworks/base/core/java/android/util/EventLog.java
        //tag:The event type tag code. value:value to log 
        public static native int writeEvent(int tag, var value);
        public static native void readEvents(int[] tags, Collection<Event> output);
        //从system/etc/event-log-tags读后同时放到了sTagCodes,sTagNames两个map中
        private static final String TAGS_FILE = "/system/etc/event-log-tags"; 
        private static HashMap<String, Integer> sTagCodes = null; 
        private static HashMap<Integer, String> sTagNames = null;

  1. EventLogTags.logtags 很多模块有该文件, writeEvent()参数tag value也是在其中被声明的
    packages/providers/BlacklistProvider/src/com/android/providers/black/EventLogTags.logtags
    packages/providers/CalendarProvider/src/com/android/providers/calendar/EventLogTags.logtags
    packages/providers/ContactsProvider/src/com/android/providers/contacts/EventLogTags.logtags
    packages/services/Telephony/src/com/android/phone/EventLogTags.logtags
    packages/apps/Settings/src/com/android/settings/EventLogTags.logtags
    packages/apps/QuickSearchBox/src/com/android/quicksearchbox/EventLogTags.logtags
    frameworks/base/services/core/java/com/android/server/EventLogTags.logtags
    frameworks/base/services/core/java/com/android/server/am/EventLogTags.logtags
    frameworks/base/packages/SystemUI/src/com/android/systemui/EventLogTags.logtags
  1. EventLogTags.logtags在Android.mk中配置
    logcat中LOCAL_SRC_FILES:= logcat.cpp event.logtags
    systemui中LOCAL_SRC_FILES := src/com/android/systemui/EventLogTags.logtags
  1. EventLogTags.logtags文件格式说明
   每一行大致三部分组成: Tag numbers + Tag names + (<名字>|数据类型[|数据单位]),(<名字>|数据类型[|数据单位])
   logcat打印内容就是第二部分+第三部分
   详见:android/system/core/logcat/event.logtags

  1. EventLogTags.logtags编译时被翻译成了java
    frameworks/base/core/java/com/android/internal/logging/EventLogTags.logtags
    
        option java_package com.android.internal.logging;
        524287 sysui_view_visibility (category|1|5),(visible|1|6)
        524288 sysui_action (category|1|5),(pkg|3)
        524290 sysui_count (name|3),(increment|1)
        524291 sysui_histogram (name|3),(bucket|1)
    
    out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/.../logging/EventLogTags.java
    
        public class EventLogTags {
          private EventLogTags() { }  // don't instantiate
        
          /** 524287 sysui_view_visibility (category|1|5),(visible|1|6) */
          public static final int SYSUI_VIEW_VISIBILITY = 524287;
        
          /** 524288 sysui_action (category|1|5),(pkg|3) */
          public static final int SYSUI_ACTION = 524288;
        
          /** 524290 sysui_count (name|3),(increment|1) */
          public static final int SYSUI_COUNT = 524290;
        
          /** 524291 sysui_histogram (name|3),(bucket|1) */
          public static final int SYSUI_HISTOGRAM = 524291;
        
          public static void writeSysuiViewVisibility(int category, int visible) {
            android.util.EventLog.writeEvent(SYSUI_VIEW_VISIBILITY, category, visible);
          }
        
          public static void writeSysuiAction(int category, String pkg) {
            android.util.EventLog.writeEvent(SYSUI_ACTION, category, pkg);
          }
        
          public static void writeSysuiCount(String name, int increment) {
            android.util.EventLog.writeEvent(SYSUI_COUNT, name, increment);
          }
        
          public static void writeSysuiHistogram(String name, int bucket) {
            android.util.EventLog.writeEvent(SYSUI_HISTOGRAM, name, bucket);
          }
        }
  1. EventLogTags.logtags相关脚本
    android/build/tools 目录下有三个event_log相关的脚本  
        event_log_tags.py //读取跟解析event_log_tags文件
        java-event-log-tags.py //把EventLogTags.logtags文件翻成java
        merge-event-log-tags.py //把多个EventLogTags.logtags合并成一个,并检查number冲突
    
    merge-event-log-tags.py使用及/system/etc/event-log-tags文件创建时间点  
        详见:android/build/core/Makefile -- .PHONY: event-log-tags
    
    遗留:event-log-tags被使用细节?其他两个py被使用时间点?

标签:logtags,EventLogTags,static,Android,com,event,android
From: https://www.cnblogs.com/Bolia/p/17958677

相关文章

  • Android架构测试 套小记
    Android架构测试主要是为了确保Android应用程序在不同设备和系统版本上的兼容性、性能和稳定性。这需要对应用程序的各个组件进行测试,包括活动、服务、广播接收器、内容提供程序等。以下是进行Android架构测试时可以采取的一些步骤:单元测试:对应用程序的各个组件进行测试,确保它......
  • 【Android】深入Binder拦截
    ☞Github☜☞Gitee☜说明Binder作为Android系统跨进程通信的核心机制。网上也有很多深度讲解该机制的文章,如:Android跨进程通信详解Binder机制原理Android系统核心机制Binder【系列】这些文章和系统源码可以很好帮助我们理解Binder的实现原理和设计理念,为拦截做准备......
  • Android——2个activity之间的数据传递返回
    老版本2个activity之间传递反回数据,实例如:https://www.cnblogs.com/xiaobaibailongma/p/16440432.html 新版本如下:https://blog.csdn.net/freezingxu/article/details/124953918?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBl......
  • 迅为RK3568开发板Android11/12/Linux编译驱动到内核
    在平时的驱动开发中,经常需要在内核中配置某种功能,为了方便大家开发和学习,本小节讲解如何在内核中添加驱动。具体的讲解原理讲解请参考本手册的驱动教程。Android11源码如果想要修改内核,可以运行以下命令进行修改:cdkernel/makeARCH=arm64rockchip_defconfigmakeARCH=arm64men......
  • Mac M1芯片安装android-platform-tools
    brewinstallCaskroom/cask/android-platform-tools遇见的报错解决办法brewupdate-reset......
  • 【设计模式】建造者模式——建造者模式在Android SDK源码中的应用
    建造者模式在AndroidSDK源码中也有广泛的应用,本文挑两个典型的类讨论一下:AlertDialog.Builder在Android源码中最常用到的建造者模式非AlertDialog.Builder莫属,代码如下:AlertDialogalertDialog=newAlertDialog.Builder(mContext) .setTitle("系统提示:").setMessage("请......
  • Mac M1芯片安装android-platform-tools
    brewinstallCaskroom/cask/android-platform-tools遇见的报错解决办法brewupdate-reset......
  • android TV 网络受限解决办法
    采用wifi或者有限网口adb方式保证在同一个局域网1、打开adb设置-系统-关于-连续点击AndroidTV操作系统版本,会有提示要打开发者选项,在开发者选项内勾选USB调试2、电脑连接adbadbconnect空格(192.168.xxx.xxx.)(xxx.xxx内是你电视盒子的IP地址)一.解决网络受限1.通过ADB......
  • Android 正圆
    <?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"......
  • Android——Glide加载网络图片
    Glide是谷歌开发的图片加载框架,也是Android官方推荐的图片加载框架。  使用Glide之前需要先导入glide库:implementation'com.github.bumptech.glide:glide:4.13.0‘  Glide的用法很简单,只需一行代码即可将网络图片加载到图像视图界面:Glide.with(活动实例).load(网址字符......