MTK平台修改log的日志级别

软件平台:Android6.0

硬件平台:MTK6797

    mtk平台的日志级别可以从一条系统属性查看:persist.log.tag,此条属性默认为V级别,然后系统的日志疯狂的输出,单单从操作层面看的话,可以setprop这个属性的值来提升系统的日志输出级别。比如,想把级别提升到error级别,则只需要执行如下操作:

setprop persist.log.tag E  即可。

 

    问题是,我们如何修改系统默认的日志级别,比如设备第一次启动,日志级别就是E或者其他。

 

    我跟了一下日志设置服务相关的代码,vendor/mediatek/proprietary/external/libxlog/xlogcmd/xlog.c文件有对log服务的相关参数初始化,系统启动时,xlog作为一个service启动,是在device/mediatek/mt6797/init.xlog.rc中定义启动,内容如下:

service xlogboot /system/bin/xlog boot
    user root
    oneshot
    disabled


向可执行文件xlog传入参数boot,从xlog的main方法看:

int main(int argc, char *argv[])
{
    if (argc < 2) {
        usage(argv[0]);
        return 1;
    }   

    const char *name = argv[1];
    if (!strcmp(name, "boot")) {
        filter_boot();
    }   

.....

会走filter_boot,这个方法会去解析一个系统默认的log配置文件:

#define XLOG_DEFAULT_FILTER_PATH "/system/etc/xlog-filter-default"

这是配置文件的路径定义,下边我们看这个文件的生成方式。

merge-xlog-filter-tags.py 这个python脚本生成了这个文件,从脚本中看,将V设置为初始化的级别,将V改为E即可。

# change xlog default print level 'E'
olevel = "error/debug+error/error"
if default_level != None:
  olevel = default_level
default_filter_buffer.write("XLOG-FILTER-V2\nALL\t%s\n" % (olevel))

这样的话,生成的xlog-filter-default的内容如下:

XLOG-FILTER-V2
ALL    error/debug+error/error
TAG    AppLaunch    off

如此,结果就妙了,会将persist.log.tag值默认设置为E,而不需要文章开始的setprop手动操作。

 

鸣金收兵!!!完工大吉!!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Android)