• Android系统通过属性设置来控制log输出的方案


     Android log相关文档索引:

    使用ADB命令控制logcat日志本地存储功能-CSDN博客

    Android系统通过属性设置来控制log输出的方案-CSDN博客

    Android系统设置kernel log level的方法-CSDN博客

    Android系统通过属性设置来控制log输出的方案

    背景

           项目中经常需要在针对性的模块或者文件,分析问题的时候输出Log,但问题分析完成后,又由于性能问题,需要关闭这些log输出。当前大多数情况下是控制整个系统的log等级来实现,但这种方式会影响到其他模块,输出过多的其他模块的log,并不能使log集中于问题;这需要一种灵活的针对性的log控制方案。

    方案

    通过对问题模块的文件,设置特定的TAG,并关联该TAG到指定的persist属性;系统编译时默认这些属性关闭或者设置较高等级; 需要分析问题时,通过adb shell 调整这些属性;从而达到控制问题模块log输出的目的;

    具体实施步骤

    1、通过Log.isLoggable控制的log属性标签


    例如:R基线中的AccessibilityCache.java中,TAG为:AccessibilityCache

    控制的属性标签为:

    log.tag.AccessibilityCache


    由于该属性不能直接进行保存,所以,需要进行转接,通过persist属性进行控制

    2、可以在系统中任意的rc文件中添加属性配置

    这里我们选择system/core/logcat/logcatd.rc文件,在其中对log.*属性和persist.*属性进行关联

    1. #add for log begin
    2. on property:persist.logd.logpersistd=clear
    3. setprop logd.logpersistd clear
    4. on property:persist.logd.logpersistd=stop
    5. setprop logd.logpersistd stop
    6. on property:persist.log.tag.AccessibilityCache=*
    7. setprop log.tag.AccessibilityCache ${persist.log.tag.AccessibilityCache}
    8. on property:persist.log.tag.GnssLocationProvider=*
    9. setprop log.tag.GnssLocationProvider ${persist.log.tag.GnssLocationProvider}
    10. #add for log end


    3、然后再在system.prop文件中对persist属性设置初始值

    1. #for FW log.tag.*
    2. persist.log.tag.AccessibilityCache=E
    3. persist.log.tag.GnssLocationProvider=E
    4. #Set logd file size 20M
    5. persist.logd.logpersistd.rotate_kbytes=20480

    4、重新编译系统

    5、刷机验证

    至此,编译后的版本,就可以根据需要通过以下两个属性,对AccessibilityCache.java和GnssLocationProvider.java文件中的log进行输出控制

    persist.log.tag.AccessibilityCache
    persist.log.tag.GnssLocationProvider

  • 相关阅读:
    vue视频播放功能
    【软考】PV 操作
    C语言之深入指针(三)(详细教程)
    编译optimize源码实现过程
    【Linux】tail命令使用
    springboot13:数据库分析
    精选30个大模型高频面试题
    Go函数介绍与一等公民
    电汇ABC(2023-10)
    1110 区块反转 – PAT乙级真题
  • 原文地址:https://blog.csdn.net/netwalk/article/details/140331814