一步地,根據(jù)第二屬性設置接口調(diào)用指令調(diào)用所述第二屬性設置接口以判斷所述日志數(shù)據(jù)處理指令(如所述第二屬性設置接口調(diào)用指令)對應的屬性鍵是否等于所述預設屬性鍵,若所述屬性鍵等于所述預設屬性鍵(如sys.save, log),則確定所述日志數(shù)據(jù)處理指令對應的屬性值為所述第一日志數(shù)據(jù),并將所述第一日志數(shù)據(jù)存儲至所述內(nèi)核驅(qū)動層日志中,可選地,通過調(diào)用內(nèi)核驅(qū)動層日志輸出接口將所述第一日志數(shù)據(jù)存儲至所述內(nèi)核驅(qū)動層日志中;可選地,所述第二屬性設置接口可以為內(nèi)核驅(qū)動底層(如內(nèi)核init進程中)的屬性設置接口(如Property_changed接口 ),可選地,所述第二屬性設置接口調(diào)用指令的屬性鍵為預設屬性鍵(如sys.save, log),所述第二屬性設置接口調(diào)用指令的屬性值為所述第一日志數(shù)據(jù),如Property_changed接口(預設屬性鍵,第一日志數(shù)據(jù));可見,從而實現(xiàn)將安卓系統(tǒng)上層應用層中的日志數(shù)據(jù)輸出至內(nèi)核驅(qū)動層日志中,即按同一時間軸記錄所述安卓系統(tǒng)上層應用層中的日志數(shù)據(jù)以及內(nèi)核驅(qū)動層日志數(shù)據(jù),以便于分析安卓系統(tǒng)上層應用層和內(nèi)核驅(qū)動底層互相影響的問題,因此,本發(fā)明實施例的日志處理方法可快速分析安卓系統(tǒng)上層應用層和內(nèi)核驅(qū)動底層互相影響的問題,提升了故障排除效率。
[0025]本發(fā)明實施例中,根據(jù)接收到的日志數(shù)據(jù)處理指令,獲取所述日志數(shù)據(jù)處理指令對應的屬性鍵和屬性值;進一步地,判斷所述日志數(shù)據(jù)處理指令對應的屬性鍵是否等于預設屬性鍵,若所述屬性鍵等于所述預設屬性鍵,則確定所述屬性值為安卓系統(tǒng)上層應用層中的待輸出至所述內(nèi)核驅(qū)動層日志中的第一日志數(shù)據(jù),并將所述第一日志數(shù)據(jù)存儲至內(nèi)核驅(qū)動層日志中;從而實現(xiàn)按同一時間軸記錄所述安卓系統(tǒng)上層應用層中的日志數(shù)據(jù)以及內(nèi)核驅(qū)動層日志數(shù)據(jù),以便于分析安卓系統(tǒng)上層應用層和內(nèi)核驅(qū)動底層互相影響的問題,因此,本發(fā)明實施例的日志處理方法可快速分析安卓系統(tǒng)上層應用層和內(nèi)核驅(qū)動底層互相影響的問題,提升了故障排除效率。
[0026]由于安卓系統(tǒng)上層應用層中的日志數(shù)據(jù)與內(nèi)核驅(qū)動層日志中的日志數(shù)據(jù)的數(shù)據(jù)格式可能會有差異,為了保證將安卓系統(tǒng)上層應用層中的日志數(shù)據(jù)正確地存入所述內(nèi)核驅(qū)動層日志中,可選地,本發(fā)明實施例中,在所述將所述第一日志數(shù)據(jù)存儲至內(nèi)核驅(qū)動層日志中之前,還包括:獲取所述安卓系統(tǒng)的內(nèi)核驅(qū)動層日志數(shù)據(jù)的數(shù)據(jù)格式;根據(jù)所述數(shù)據(jù)格式將所述第一日志數(shù)據(jù)進行數(shù)據(jù)格式封裝,生成第二日志數(shù)據(jù);對應地,所述將所述第一日志數(shù)據(jù)存儲至內(nèi)核驅(qū)動層日志中,包括:將所述第二日志數(shù)據(jù)存儲至所述內(nèi)核驅(qū)動層日志中。
[0027]對于android系統(tǒng)來說,內(nèi)核驅(qū)動層的日志數(shù)據(jù)(kernal log)編程規(guī)范通過C/C++域來實現(xiàn),而對于android系統(tǒng)其他層數(shù)據(jù)可通過高級JAVA域數(shù)據(jù)來實現(xiàn),由于數(shù)據(jù)格式的限制,在實際實現(xiàn)過程中,會把其他層數(shù)據(jù)輸出到內(nèi)核驅(qū)動層,反之該過程則不可逆。
[0028]本發(fā)明實施例中,為了保證將安卓系統(tǒng)上層應用層中的日志數(shù)據(jù)正確地存入所述內(nèi)核驅(qū)動層日志中,在將所述第一日志數(shù)據(jù)存儲至內(nèi)核驅(qū)動層日志中之前,先獲取所述安卓系統(tǒng)的內(nèi)核驅(qū)動層日志中日志數(shù)據(jù)的數(shù)據(jù)格式,其次,根據(jù)所述數(shù)據(jù)格式將所述第一日志數(shù)據(jù)進行數(shù)據(jù)格式封裝,生成符合所述內(nèi)核驅(qū)動層日志數(shù)據(jù)的數(shù)據(jù)格式的第二日志數(shù)據(jù),進一步地,將所述第二日志數(shù)據(jù)存儲至所述內(nèi)核驅(qū)動層日志中,可選地,通過調(diào)用內(nèi)核驅(qū)動層日志輸出接口將所述第二日志數(shù)據(jù)存儲至所述內(nèi)核驅(qū)動層日志中。
[0029]可選地,作為一種可實施的方式,結(jié)合本發(fā)明上述實施例中記載可知:根據(jù)第一屬性設置接口調(diào)用指令調(diào)用第一屬性設置接口將安卓系統(tǒng)上層應用層中的待輸出至所述內(nèi)核驅(qū)動層日志中的第一日志數(shù)據(jù)傳輸至內(nèi)核驅(qū)動底層的第二屬性設置接口,進一步地,根據(jù)第三屬性設置接口調(diào)用指令調(diào)用第三屬性設置接口以獲取所述安卓系統(tǒng)的內(nèi)核驅(qū)動層日志中日志數(shù)據(jù)的數(shù)據(jù)格式,根據(jù)所述數(shù)據(jù)格式將所述第一日志數(shù)據(jù)進行數(shù)據(jù)格式封裝,生成符合所述內(nèi)核驅(qū)動層日志數(shù)據(jù)的數(shù)據(jù)格式的第二日志數(shù)據(jù),并將所述第二日志數(shù)據(jù)傳輸給所述第二屬性設置接口,以便根據(jù)第二屬性設置接口調(diào)用指令(此時,所述第二屬性設置接口調(diào)用指令對應的屬性值為所述第二日志數(shù)據(jù))調(diào)用所述第二屬性設置接口判斷所述日志數(shù)據(jù)處理指令(如所述第二屬性設置接口調(diào)用指令)對應的屬性鍵是否等于預設屬性鍵,若所述屬性鍵等于所述預設屬性鍵,則確定所述第二屬性設置接口調(diào)用指令對應的屬性值為所述第二日志數(shù)據(jù),將所述第二日志數(shù)據(jù)存儲至內(nèi)核驅(qū)動層日志中。
[0030]可選地,作為另一種可實施的方式,結(jié)合本發(fā)明上述實施例中記載可知:根據(jù)第二屬性設置接口調(diào)用指令調(diào)用所述第二屬性設置接口以判斷所述日志數(shù)據(jù)處理指令(如所述第二屬性設置接口調(diào)用指令)對應的屬性鍵是否等于所述預設屬性鍵,若所述屬性鍵等于所述預設屬性鍵(如sys.save, log),則確定所述日志數(shù)據(jù)處理指令對應的屬性值為所述第一日志數(shù)據(jù),進一步地,根據(jù)第三屬性設置接口調(diào)用指令調(diào)用第三屬性設置接口以獲取所述安卓系統(tǒng)的內(nèi)核驅(qū)動層日志中日志數(shù)據(jù)的數(shù)據(jù)格式,根據(jù)所述數(shù)據(jù)格式將所述第一日志數(shù)據(jù)進行數(shù)據(jù)格式封裝,生成符合所述內(nèi)核驅(qū)動層日志數(shù)據(jù)的數(shù)據(jù)格式的第二日志數(shù)據(jù),并將所述第二日志數(shù)據(jù)傳輸給所述第二屬性設置接口,以便根據(jù)第二屬性設置接口調(diào)用指令調(diào)用所述第二屬性設置接口將所述第二日志數(shù)據(jù)存儲至內(nèi)核驅(qū)動層日志中。
[0031]可選地,本發(fā)明實施例中的所述第三屬性設置接口可以為內(nèi)核驅(qū)動底層(如C/C++域)的屬性設置接口 (如Property_set接口)。
[0032]可選地,所述根據(jù)接收到的日志數(shù)據(jù)處理指令,獲取所述日志數(shù)據(jù)處理指令對應的屬性鍵和屬性值之前,還包括:
[0033]確定所述第一日志數(shù)據(jù);設置所述日志數(shù)據(jù)處理指令對應的屬性鍵為所述預設屬性鍵,所述日志數(shù)據(jù)處理指令對應的屬性值為所述第一日志數(shù)據(jù)。
[0034]本發(fā)明實施例中,可選地,需要先確定安卓系統(tǒng)上層應用層中的待輸出至所述內(nèi)核驅(qū)動層日志中的第一日志數(shù)據(jù),進一步地,設置所述日志數(shù)據(jù)處理指令(如系統(tǒng)屬性設置指令)對應的屬性鍵為所述預設屬性鍵(如sys.save, log),所述日志數(shù)據(jù)處理指令對應的屬性值為所述第一日志數(shù)據(jù),便于后續(xù)根據(jù)所述日志數(shù)據(jù)處理指令對應的屬性鍵是否等于預設屬性鍵的方式來判斷所述日志數(shù)據(jù)處理指令對應的屬性值是否為所述第一日志數(shù)據(jù)。
[0035]本發(fā)明實施例中的日志處理方法可基于系統(tǒng)屬性設置實現(xiàn)的(如通過預定義的日志輸出屬性的設置實現(xiàn)的),標準的系統(tǒng)屬性修改/設置操作對應的標準系統(tǒng)屬性的屬性鍵一般為特定特征關鍵值(如顏色、大小或字體等),而所述日志輸出屬性的屬性鍵為預設屬性鍵(如sys.save, log)。本發(fā)明實施例中,可選地,作為另一種可實施的方式,若所述日志數(shù)據(jù)處理指令對應的屬性鍵不等于所述預設屬性鍵,則確定所述日志數(shù)據(jù)處理指令對應的屬性值為標準系統(tǒng)屬性值,直接將所述屬性值賦于所述日志數(shù)據(jù)處理指令對應的屬性鍵。
[0036]本發(fā)明實施例中,若所述日志數(shù)據(jù)處理指令對應的屬性鍵不等于所述預設屬性鍵(如顏色、大小或字體等),則確定所述日志數(shù)據(jù)處理指令(如系統(tǒng)屬性設置指令)為標準的系統(tǒng)屬性設置指令,所述日志數(shù)據(jù)處理指令對應的屬性值為標準系統(tǒng)屬性值(即表示本次的日志數(shù)據(jù)處理指令不是對預設的日志輸出屬性的修改/設置操作,而為標準的系統(tǒng)屬性修改/設置操作),因此,直接將所述屬性值賦于所述日志數(shù)據(jù)處理指令對應的屬性鍵。
[0037]可選地,由于在修改/設置系統(tǒng)屬性的過程中需要調(diào)用不同的屬性設置接口(如SystemProperty 接口、Property_set 接口和 Property_changed 接口等),因此,在調(diào)用過程中需要修改屬性設置接口對應的屬性鍵。在上述實施例的基礎上,進一步地,本發(fā)明實施例的日志的處理方法還包括:接收屬性鍵修改指令,所述屬性鍵修改指令包括接口標識以及對應的變更閾值;根據(jù)所述屬性鍵修改指令,將接口標識對應的接口中的屬性鍵設置為所述變更閾值。
[0038]本發(fā)明實施例中,在需要修改屬性設置接口對應的屬性鍵時,通過接收包括接口標識以及對應的變更閾值的屬性鍵修改指令,例如所述屬性鍵修改指令包括:Pr op er t y_set接口的接口標識和變更閾值(如sys.save, log);進一步地,根據(jù)所述屬性鍵修改指令所包含的接口標識(如Property_set接口的接口標識)以及對應的變更閾值(如sys.save, log),將所述接口標識對應的接口(如Property_set接口)中的原始屬性鍵設置為所述變更閾值(如sys.save, log);或者例如當前系統(tǒng)屬性設置操作為顏色屬性設置,若需