日志信息的輸出方法、裝置及終端設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于終端設(shè)備技術(shù)領(lǐng)域,尤其涉及一種日志信息的輸出方法、裝置及終端設(shè)備。
【背景技術(shù)】
[0002]在開發(fā)智能手機(jī)系統(tǒng)時(shí),需要對(duì)程序進(jìn)行運(yùn)行調(diào)試并打印運(yùn)行過程中的日志信息。以火狐移動(dòng)操作系統(tǒng)FireFox OS為例,現(xiàn)有技術(shù)主要使用adb logcat顯示日志信息,所顯示的內(nèi)容沒有經(jīng)過過濾,日志信息多且復(fù)雜,不利于用戶從中獲取有用的日志信息。而在打印日志信息時(shí),dump函數(shù)是全局函數(shù),只要是JS或者JSM文件,都可以使用dump函數(shù)打??;debug函數(shù)不是全局函數(shù),只能在定義的JS文件里面使用;Android系統(tǒng)中多采用QLOGV、QLOGD、QLOG1、QLOGW、QLOGE、QL0GS六種打印方式,也不是全局的,每次打印都需要加載一次LogUtils.h、untils/Log.h等的頭文件,影響了程序運(yùn)行的效率。
【發(fā)明內(nèi)容】
[0003]鑒于此,本發(fā)明提供了一種日志信息的輸出方法、裝置及終端設(shè)備,以解決現(xiàn)有技術(shù)在打印日志信息時(shí)需要反復(fù)加載頭文件的問題,以及提高日志信息的可讀性。
[0004]第一方面,提供了一種日志信息的輸出方法;所述輸出方法包括:
[0005]當(dāng)接收到日志信息輸出指令時(shí),加載動(dòng)態(tài)庫文件,所述動(dòng)態(tài)庫文件中包括多種不同的日志輸出接口;
[0006]根據(jù)待輸出日志信息的文件的類型從所述動(dòng)態(tài)庫文件中調(diào)用對(duì)應(yīng)的日志輸出接口,通過所述日志輸出接口輸出所述日志信息。
[0007]第二方面,提供了一種日志信息的輸出裝置,所述輸出裝置包括:
[0008]加載模塊,用于當(dāng)接收到日志信息輸出指令時(shí),加載動(dòng)態(tài)庫文件,所述動(dòng)態(tài)庫文件中包括多種不同的日志輸出接口;
[0009]輸出模塊,用于根據(jù)待輸出日志信息的文件的類型從所述動(dòng)態(tài)庫文件中調(diào)用對(duì)應(yīng)的日志輸出接口,通過所述日志輸出接口輸出所述日志信息。
[0010]第三方面,提供了一種終端設(shè)備,所述終端設(shè)備包括如上所述的日志信息的輸出
目.ο
[0011]與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例通過將多種不同類型的文件對(duì)應(yīng)的日志輸出接口整合封裝為一動(dòng)態(tài)庫文件,以管理現(xiàn)有的多種日志輸出方式;在程序的運(yùn)行調(diào)試過程中,當(dāng)接收到日志信息輸出指令時(shí),加載所述動(dòng)態(tài)庫文件;根據(jù)待輸出日志信息的文件的類型從所述動(dòng)態(tài)庫文件中調(diào)用對(duì)應(yīng)的日志輸出接口,通過所述日志輸出接口輸出所述日志信息;從而避免了對(duì)日志輸出所需的頭文件的反復(fù)加載,有效地提高了程序的運(yùn)行速率。
【附圖說明】
[0012]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他附圖。
[0013]圖1是本發(fā)明實(shí)施例提供的日志信息的輸出方法的實(shí)現(xiàn)流程圖;
[0014]圖2是本發(fā)明另一實(shí)施例提供的日志信息的輸出方法的實(shí)現(xiàn)流程圖;
[0015]圖3是本發(fā)明實(shí)施例提供的日志信息的輸出裝置的組成結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0016]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0017]在本發(fā)明實(shí)施例中,所述日志信息的輸出方法應(yīng)用于終端設(shè)備中,所述終端設(shè)備包括但不限于智能手機(jī)、平板電腦等。通過將多種不同類型的文件對(duì)應(yīng)的日志輸出接口整合封裝為一動(dòng)態(tài)庫文件,以管理現(xiàn)有的多種日志輸出方式;在程序的運(yùn)行調(diào)試過程中,當(dāng)接收到日志信息輸出指令時(shí),加載所述動(dòng)態(tài)庫文件;根據(jù)待輸出日志信息的文件的類型從所述動(dòng)態(tài)庫文件中調(diào)用對(duì)應(yīng)的日志輸出接口,并通過所述日志輸出接口輸出所述日志信息;從而避免了對(duì)日志輸出所需的頭文件的反復(fù)加載,有效地提高了程序的運(yùn)行速率。本發(fā)明實(shí)施例還提供了相應(yīng)的裝置,以下分別進(jìn)行詳細(xì)的說明。
[0018]參閱圖1,圖1示出了本發(fā)明實(shí)施例提供的日志信息的輸出方法的第一實(shí)現(xiàn)流程。所述輸出方法包括:
[0019]在步驟S101中,當(dāng)接收到日志信息輸出指令時(shí),加載動(dòng)態(tài)庫文件,所述動(dòng)態(tài)庫文件中包括多種不同的日志輸出接口。
[0020]在本發(fā)明實(shí)施例中,動(dòng)態(tài)庫文件整合了多種不同的日志輸出接口,以管理現(xiàn)有的日志輸出方式。在加載動(dòng)態(tài)庫文件之前,預(yù)先編寫配置文件,所述配置文件中包括生成動(dòng)態(tài)庫所需的文件,這些文件定義了日志輸出接口以及不同類型文件在輸出日志信息時(shí)對(duì)應(yīng)采用的日志輸出接口,從而實(shí)現(xiàn)了對(duì)現(xiàn)有不同日志輸出方式的管理。編譯所述配置文件得到動(dòng)態(tài)庫文件,并存儲(chǔ)所述動(dòng)態(tài)庫文件。示例性地,可將所述動(dòng)態(tài)庫文件存放到終端設(shè)備的/system/lib 目錄下。
[0021]當(dāng)接收到日志信息輸出指令時(shí),即終端設(shè)備上正在調(diào)試的程序需要輸出日志信息時(shí),自動(dòng)向內(nèi)存中加載所述動(dòng)態(tài)庫文件,而無需加載utils/Log.h、LogUtils.h等頭文件。
[0022]在步驟S102中,根據(jù)待輸出日志信息的文件的類型從所述動(dòng)態(tài)庫文件中調(diào)用對(duì)應(yīng)的日志輸出接口,通過所述日志輸出接口輸出所述日志信息。
[0023]在本發(fā)明實(shí)施例中,所述待輸出日志信息的文件的類型是指將要輸出日志信息的文件的代碼類型,包括JS代碼(對(duì)應(yīng)的文件類型為JS文件)和C++代碼(對(duì)應(yīng)的文件類型為C++文件)。不同類型的文件對(duì)應(yīng)不同的輸出接口。在加載動(dòng)態(tài)庫文件到內(nèi)存中后,程序直接利用所述動(dòng)態(tài)庫文件中對(duì)應(yīng)的日志輸出接口來輸出日志信息,從而避免了多次、反復(fù)加載LogUtils.h、untils/Log.h等輸出日志所需的頭文件,有效地提高了程序的運(yùn)行速率。
[0024]作為本發(fā)明的一個(gè)優(yōu)選示例,所述動(dòng)態(tài)庫文件中包括第一日志輸出接口和第二日志輸出接口。當(dāng)文件類型為JS文件時(shí),對(duì)應(yīng)調(diào)用第一日志輸出接口輸出;當(dāng)文件類型為C++文件時(shí),對(duì)應(yīng)調(diào)用第二日志輸出接口輸出。在生成動(dòng)態(tài)庫文件時(shí),所述配置文件中包括JS文件、WEBIDL文件、JSM文件、IDL文件、CPP文件。其中,所述WEBIDL文件為接口定義文件,用于實(shí)現(xiàn)Gaia層和Gecko層中JS文件、JSM文件之間的通信;所述IDL文件用于聲明第一日志輸出接口、第二日志輸出接口,以實(shí)現(xiàn)Gecko層中JS文件、JSM文件和C++文件之間的通信,所述CPP文件用于實(shí)現(xiàn)第一日志輸出接口和第二日志輸出接口。編譯所述配置文件得到動(dòng)態(tài)庫文件,所述動(dòng)態(tài)庫文件中包括第一日志輸出接口和第二日志輸出接口,以供調(diào)試過程中的程序在輸出日志信息時(shí)調(diào)用。存儲(chǔ)所述動(dòng)態(tài)庫文件。
[0025]圖2示出了本發(fā)明另一實(shí)施例提供的日志信息的輸出方法的具體實(shí)現(xiàn)流程。參閱圖2,所述方法包括:
[0026]在步驟S201中,當(dāng)接收到日志信息輸出指令時(shí),加載動(dòng)態(tài)庫文件,所述動(dòng)態(tài)庫文件中包括多種不同的日志輸出接口。
[0027]當(dāng)所述待輸出日志信息的文件為C++文件時(shí),執(zhí)行步驟S202 ;當(dāng)所述待輸出日志信息的文件為JS文件時(shí),執(zhí)行步驟S205。
[0028]在步驟S202中,當(dāng)所述待輸出日志信息的文件為C++文件時(shí),從所述動(dòng)態(tài)庫文件中調(diào)用第一日志輸出接口。
[0029]在步驟S203中,獲取所述第一日志輸出接口的優(yōu)先級(jí)參數(shù),選用與所述優(yōu)先級(jí)參數(shù)對(duì)應(yīng)的日志輸出子函數(shù)。
[0030]在步驟S204中,獲取所述C++文件的標(biāo)簽信息,將所述標(biāo)簽信息添加到待輸出的日志信息中,并通過所述日志輸出子函數(shù)輸出所述待輸出的日志信息中帶有預(yù)設(shè)標(biāo)簽信息的日志信息。
[0031]對(duì)于C++文件,在加載動(dòng)態(tài)庫文件到內(nèi)存中后,直接調(diào)用IDL文件中定義的第一日志輸出接口。由于Android中在輸出日志時(shí)可使用QLOGV、QLOGD、QLOG1、QLOGW、QL0GE、QL0GS等6種輸出函數(shù)。鑒于此,本發(fā)明實(shí)施例在所述第一日志輸出接口中設(shè)置優(yōu)先級(jí)參數(shù),6種日志輸出函數(shù)分別對(duì)應(yīng)不同的優(yōu)先級(jí)參數(shù)值,以將上述6種日志輸出函數(shù)整合封裝到所述第一日志輸出接口中。上述日志輸出子函數(shù)包括但不限于QLOGV、QLOGD、QL0G1、QLOGW、QLOGE、QL0GS等6種輸出函數(shù),其中,所述QL0GD用于輸出需要調(diào)試的信息,將所述QL0GD設(shè)置為默認(rèn)函數(shù)。在調(diào)用第一日志輸出接口后,通過所述優(yōu)先級(jí)參數(shù)來確定用于輸出所述日志信息的日志輸出子函數(shù)。若所述優(yōu)先級(jí)參數(shù)缺省時(shí),則默認(rèn)選用QL0GD日志輸出子函數(shù)。
[0032]本發(fā)明實(shí)施例還為所述C++文件設(shè)置標(biāo)簽信息,不同的C++文件設(shè)置的標(biāo)簽信息可以相同、也可以不同,為能夠過濾后得到同一模塊的日志信息,建議同一模塊使用相同關(guān)鍵字的標(biāo)簽,不同模塊使用不同關(guān)鍵字的標(biāo)簽。所述第一日志輸出接口具有過濾功能。在調(diào)用第一日志輸出接口后,獲取所述標(biāo)簽信息。將所述標(biāo)簽信息添加到待輸出的日志信息中,并通過所述日志輸出子函數(shù)輸出所述待輸出的日志信息中帶有預(yù)設(shè)標(biāo)簽信息的日志信息。其中,所述預(yù)設(shè)標(biāo)簽信息由用戶設(shè)置,為用戶需要獲得的日志信息的標(biāo)簽信息,通過輸出帶有預(yù)設(shè)標(biāo)簽信息的日志信息,從而實(shí)現(xiàn)了對(duì)日志信息的過濾、分類,輸出用戶所需的日志信息,提高了日志信息的可讀性,使得打印日志信息更加便捷。
[0033]在步驟S205中,當(dāng)所述待輸出日志信息的文件為JS文件時(shí),從所述動(dòng)態(tài)庫文件中調(diào)用第二日志輸出接口。
[0034]在步驟S206中,獲取所述JS文件的標(biāo)簽信息,將所述標(biāo)簽信息添加到待輸出的日志信息中,并通過所述第二日志輸出接口輸出所述待輸出的日志信息中帶有預(yù)設(shè)標(biāo)簽信息的日志信息。
[0035]在這里,當(dāng)所述待輸出日志信息的文件為JS文件時(shí),則調(diào)用動(dòng)態(tài)庫文件中WEBIDL文件中定義的第二日志輸出接口,以所述第二日志輸出接口作為日志輸出函數(shù)。
[0036]同樣地,本發(fā)明實(shí)施例預(yù)先為所述JS文件設(shè)置了標(biāo)簽信息,不同的JS文件對(duì)應(yīng)設(shè)置的標(biāo)簽信息可以相同、也可以不同,為能夠過濾后得到同一模塊的日志信息,建議同一模塊使用相同關(guān)鍵字的標(biāo)簽,不同模塊使用不同關(guān)鍵字的標(biāo)簽。在調(diào)用第二日志輸出接口后,獲取所述標(biāo)簽信息,將所述標(biāo)簽信息添加到待輸出的日志信息中,并通過所述第二日志輸出接口輸出所述待輸出的日志信息中帶有預(yù)設(shè)標(biāo)簽信息的日志信息。其中,所述預(yù)設(shè)標(biāo)簽信息由用戶設(shè)置,為用戶需要獲得的日志信息的標(biāo)簽信息,通過輸出帶有預(yù)設(shè)標(biāo)簽信息的日志信息,從而實(shí)現(xiàn)了對(duì)