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手動操作。
鳴金收兵!!!完工大吉!!!