南宁模板做网站,网站制作语言,北京住房及城乡建设部网站,个人做网站赚钱么Android系统通过属性设置来控制log输出的方案
背景 项目中经常需要在针对性的模块或者文件#xff0c;分析问题的时候输出Log#xff0c;但问题分析完成后#xff0c;又由于性能问题#xff0c;需要关闭这些log输出。当前大多数情况下是控制整个系统的log等级来实现#…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.*属性进行关联
#add for log begin
on property:persist.logd.logpersistdclearsetprop logd.logpersistd clearon property:persist.logd.logpersistdstopsetprop logd.logpersistd stopon property:persist.log.tag.AccessibilityCache*setprop log.tag.AccessibilityCache ${persist.log.tag.AccessibilityCache}on property:persist.log.tag.GnssLocationProvider*setprop log.tag.GnssLocationProvider ${persist.log.tag.GnssLocationProvider}#add for log end 3、然后再在system.prop文件中对persist属性设置初始值
#for FW log.tag.*
persist.log.tag.AccessibilityCacheE
persist.log.tag.GnssLocationProviderE
#Set logd file size 20M
persist.logd.logpersistd.rotate_kbytes20480
4、重新编译系统
5、刷机验证 至此编译后的版本就可以根据需要通过以下两个属性对AccessibilityCache.java和GnssLocationProvider.java文件中的log进行输出控制
persist.log.tag.AccessibilityCachepersist.log.tag.GnssLocationProvider