日志信息的輸出方法及裝置制造方法
【專利摘要】本發(fā)明實(shí)施例公開(kāi)了一種日志信息的輸出方法及裝置,涉及信息【技術(shù)領(lǐng)域】,可以提高各線程的任務(wù)執(zhí)行效率和執(zhí)行性能。所述方法包括:首先獲取多個(gè)應(yīng)用線程輸出的多個(gè)日志信息,然后依次將所述多個(gè)日志信息中的每一個(gè)日志信息,緩存到系統(tǒng)線程建立的日志信息緩存隊(duì)列中,最后將位于所述日志信息緩存隊(duì)列隊(duì)頭的日志信息配置到日志信息共享文件中。
【專利說(shuō)明】日志彳5息的輸出方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息【技術(shù)領(lǐng)域】,特別涉及一種日志信息的輸出方法及裝置。
【背景技術(shù)】
[0002]_ 〃隨著終端設(shè)備的不斷發(fā)展,終端設(shè)備中的應(yīng)用程序種類也越來(lái)越多,通常應(yīng)用程 序在運(yùn)行的過(guò)程中,都會(huì)有多個(gè)線程同時(shí)存在,為了調(diào)試和定位應(yīng)用程序運(yùn)行過(guò)程中的問(wèn) 題,每個(gè)線程都會(huì)有大量的日志信息需要輸出到日志信息共享文件中。
[0003]目前各個(gè)線程是按照一定順序?qū)⒏髯缘娜罩拘畔⑴渲玫饺罩拘畔⒐蚕砦募校?當(dāng)某一個(gè)線程正在進(jìn)行將輸出的日志信息配置到日志信息共享文件中的操作時(shí),其它線程 必須等到該線程向日志信息共享文件中配置日志信息的操作完成后,才能向日志信息共享 文件中再次配置日志信息,因此通過(guò)現(xiàn)有日志信息的輸出方式進(jìn)行日志信息輸出,會(huì)使得 各線程在向日志信息共享文件中配置日志信息之前的等待時(shí)間較長(zhǎng),并且各線程將輸出的 日志信息配置到日志信息共享文件中的操作耗時(shí)也較長(zhǎng),從而造成各個(gè)線程的任務(wù)執(zhí)行效 率較低。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實(shí)施例提供一種日志信息的輸出方法和裝置,可以提高各線程的任務(wù)執(zhí)行 效率。
[0005] 本發(fā)明實(shí)施例采用的技術(shù)方案為:
[0006] 一種日志信息的輸出方法,包括:
[0007] 獲取多個(gè)應(yīng)用線程輸出的多個(gè)日志信息;
[0008]依次將所述多個(gè)日志信息中的每一個(gè)日志信息,緩存到系統(tǒng)線程建立的日志信息 緩存隊(duì)列中;
[0009]將位于所述日志信息緩存隊(duì)列隊(duì)頭的日志信息配置到日志信息共享文件中。
[0010] 一種日志信息的輸出裝置,包括:
[0011] 獲取單元,用于獲取多個(gè)應(yīng)用線程輸出的多個(gè)日志信息;
[0012]緩存單元,用于依次將所述獲取單元獲取的多個(gè)日志信息中的每一個(gè)日志信息, 緩存到系統(tǒng)線程建立的日志信息緩存隊(duì)列中;
[0013]配置單元,用于將所述緩存單元緩存的位于所述日志信息緩存隊(duì)列隊(duì)頭的日志信 息配置到日志信息共享文件中。
[0014] 本發(fā)明實(shí)施例提供的日志信息的輸出方法及裝置,首先獲取多個(gè)應(yīng)用線程輸出的 多個(gè)日志信息,然后依次將所述多個(gè)日志信息中的每一個(gè)日志信息,緩存到系統(tǒng)線程建立 的日志信息緩存隊(duì)列中,最后將位于所述日志信息緩存隊(duì)列隊(duì)頭的日志信息配置到日志信 息共享文件中。與目前各個(gè)線程是按照一定順序?qū)⒏髯暂敵龅娜罩拘畔⒅苯优渲迷谌罩拘?息共享文件中,即當(dāng)某一個(gè)線程正在將輸出的日志信息配置到日志信息共享文件中時(shí),其 它線程必須等到該線程對(duì)日志信息共享文件的配置操作完成后,才能向日志信息共享文件 中再次配置日志信息相比,本發(fā)明實(shí)施例通過(guò)配置獨(dú)立的系統(tǒng)線程建立并維護(hù)一個(gè)日志信 息緩存隊(duì)列,并且通過(guò)系統(tǒng)線程從該日志信息緩存隊(duì)列獲取日志信息,并將獲取到的日志 信息配置在日志信息共享文件中,使得其它線程只需要將輸出的日志信息緩存在該日志信 息緩存隊(duì)列中后,就可以立刻執(zhí)行其他任務(wù),而不用等到將輸出的日志信息配置在日志信 息共享文件中的操作完成后,才能執(zhí)行其他任務(wù),從而可以提高各線程的任務(wù)執(zhí)行效率和 執(zhí)行性能。
【專利附圖】
【附圖說(shuō)明】
[0015]為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述 中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些 實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附 圖獲得其它的附圖。
[0016]圖1為本發(fā)明實(shí)施例提供的一種日志信息的輸出方法流程圖;
[0017]圖2為本發(fā)明實(shí)施例提供的另一種日志信息的輸出方法流程圖;
[0018]圖3為本發(fā)明實(shí)施例提供的一種日志信息的輸出裝置結(jié)構(gòu)示意圖;
[0019]圖4為本發(fā)明實(shí)施例提供的另一種日志信息的輸出裝置結(jié)構(gòu)示意圖;
[0020]圖5為本發(fā)明實(shí)施例提供的日志信息緩存隊(duì)列示意圖。
【具體實(shí)施方式】
[0021] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0022]為使本發(fā)明技術(shù)方案的優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作詳細(xì)說(shuō) 明。
[0023]本發(fā)明實(shí)施例提供一種日志信息的輸出方法,如圖i所示,所述方法包括:
[0024] 101、獲取多個(gè)應(yīng)用線程輸出的多個(gè)日志信息。
[0025]其中,在每一個(gè)應(yīng)用線程運(yùn)行時(shí)都會(huì)有大量的日志信息輸出,日志信息用于記錄 各個(gè)應(yīng)用線程運(yùn)行過(guò)程中進(jìn)行各種操作的結(jié)果數(shù)據(jù)。
[0026] 102、依次將所述多個(gè)日志信息中的每一個(gè)日志信息,緩存到系統(tǒng)線程建立的曰志 信息緩存隊(duì)列中。
[0027]其中,所述日志信息緩存隊(duì)列可以用于保存不同應(yīng)用線程輸出的日志信息,曰志 信息緩存隊(duì)列中緩存日志信息的形式具體可以為緩存日志信息對(duì)應(yīng)的內(nèi)存地址,本發(fā)明實(shí) 施例不做限定。由于各個(gè)應(yīng)用線程將輸出的日志信息緩存在日志信息緩存隊(duì)列的操作是在 內(nèi)存中進(jìn)行的,而在內(nèi)存中進(jìn)行緩存操作的耗時(shí)非常少,因此與各個(gè)應(yīng)用線程直接將輸出 的曰志信息配置在日志信息共享文件的操作相比,可以大量較少操作耗時(shí),進(jìn)一步提升了 各線程的任務(wù)執(zhí)行效率。
[0028]對(duì)于本發(fā)明實(shí)施例,具體是通過(guò)創(chuàng)建獨(dú)立的系統(tǒng)線程建立和維護(hù)上述日志信息緩 存隊(duì)列,并通過(guò)系統(tǒng)線程從該日志信息緩存隊(duì)列中獲取緩存的日志信息,從而完成向日志 信息共享文件中配置日志信息的操作。日志信息緩存隊(duì)列的大小具體可以根據(jù)終端設(shè)備的 內(nèi)存大小來(lái)進(jìn)行配置,日志信息緩存隊(duì)列的數(shù)據(jù)結(jié)構(gòu)具體可以如下所示:
[0029] struct student { void* queue[QUEUE-SIZE]; inf hcdd; ini tail; bQOl fill; bool empty;
[0030] 其中,queue為日志信息指針,用于標(biāo)識(shí)日志信息在指針數(shù)組中的位置,QUEUE_ SIZE為日志信息指針數(shù)組的長(zhǎng)度,用于標(biāo)識(shí)日志信息緩存隊(duì)列的長(zhǎng)度,head為日志信息; 隊(duì)下標(biāo)位置,用于標(biāo)識(shí)需要從日志信息緩存隊(duì)列中獲取的日志信息在指針數(shù)組中的位置, tail為日志信息入隊(duì)下標(biāo)位置,用于標(biāo)識(shí)需要保存在日志信息緩存隊(duì)列中的日志信息在指 針數(shù)組中的位置,full用于標(biāo)識(shí)日志信息緩存隊(duì)列中是否還有剩余存儲(chǔ)空間, empty用于 標(biāo)識(shí)日志信息緩存隊(duì)列是否為空。
[0031] 由于本發(fā)明實(shí)施例中的日志信息緩存隊(duì)列為多線程下的共享資源,因此進(jìn)行將日 志信息保存在日志信息緩存隊(duì)列和從日志信息緩存隊(duì)列獲取日志信息的操作時(shí),都需要對(duì) 曰志信息緩存隊(duì)列加互斥鎖,從而保證對(duì)共享資源操作的完整性。當(dāng)操作完成后對(duì)日志信 息緩存隊(duì)列進(jìn)行解鎖。
[0032] 對(duì)于本發(fā)明實(shí)施例,向日志信息緩存到緩存隊(duì)列中緩存日志信息的具體程序?qū)崿F(xiàn) 過(guò)程可以包括:在將日志信息緩存在日志信息緩存隊(duì)列之前,首先對(duì)該日志信息緩存隊(duì)列 加互斥鎖,然后判斷日志信息緩存隊(duì)列對(duì)應(yīng)的full標(biāo)志位是否為true,若標(biāo)志位為true, 說(shuō)明日志信息緩存隊(duì)列內(nèi)存空間已滿,無(wú)法再對(duì)該日志信息進(jìn)行保存,此時(shí)對(duì)該日志信息 緩存隊(duì)列進(jìn)行解鎖,然后向維護(hù)該日志信息緩存隊(duì)列的系統(tǒng)線程發(fā)送提示消息,以提示所 述系統(tǒng)線程日志信息緩存隊(duì)列中存在可以獲取并配置到日志信息共享文件中的日志信息; 若日志信息緩存隊(duì)列對(duì)應(yīng)的full標(biāo)志位為false,說(shuō)明日志信息緩存隊(duì)列的內(nèi)存空間未 W,將該日志彳目息的指針賦值在下標(biāo)位置為tail的queue數(shù)組中,以完成對(duì)該日志信息的 入隊(duì)操作,然后對(duì)日志信息緩存隊(duì)列進(jìn)行解鎖,并且向系統(tǒng)線程發(fā)送提示消息,以提示所述 系統(tǒng)線程日志信息緩存隊(duì)列中存在可以配置到日志信息共享文件中的日志信息。
[0033]其中,判斷日志信息緩存隊(duì)列的內(nèi)存空間是否已滿的過(guò)程具體可以包括:將任意 一個(gè)日志fe息的指針賦值在下標(biāo)位置為tail的queue數(shù)組中后,將tail值加1,并且判斷 當(dāng)前tail的值是否等于數(shù)組最大長(zhǎng)度,若等于數(shù)組最大長(zhǎng)度,則將 tail值配置為〇,然后判 斷tai 1值是否等于head值,若不等于數(shù)組最大長(zhǎng)度,則直接判斷tai 1值是否等于head值, 當(dāng)tail值等于head值時(shí),說(shuō)明該緩存隊(duì)列中一直在進(jìn)行日志信息入隊(duì)操作,但是緩存隊(duì) 列中沒(méi)有日志信息進(jìn)行出隊(duì)操作,或者進(jìn)行入隊(duì)操作的日志信息的數(shù)量大于進(jìn)行出隊(duì)操作 的日志信息的數(shù)量,并且數(shù)量差值等于日志信息緩存隊(duì)列中可以緩存的日志信息的上限數(shù) 量,從而使得日志信息緩存隊(duì)列的內(nèi)存空間已滿,此時(shí)將full標(biāo)志位配置為true。當(dāng)tail 值不等于head值時(shí),說(shuō)明該緩存隊(duì)列中進(jìn)行入隊(duì)操作的日志信息的數(shù)量與進(jìn)行出隊(duì)操作 的曰志信息的數(shù)量保持平衡,使得日志信息緩存隊(duì)列的內(nèi)存空間始終未滿,此時(shí)將full標(biāo) 志位配置為false,以標(biāo)識(shí)當(dāng)前日志信息緩存隊(duì)列的內(nèi)存空間未滿,說(shuō)明此時(shí)可以保存該日 志信息。
[0034] 1〇3、將位于所述日志信息緩存隊(duì)列隊(duì)頭的日志信息配置到日志信息共享文件中。
[0035]其中,日志信息共享文件具體可以為設(shè)備文件或者普通文件,可以用于保存各個(gè) 線程輸出的日志信息。本發(fā)明實(shí)施例中的日志信息緩存隊(duì)列具體可以為先入先出隊(duì)列,因 此在從日志信息緩存隊(duì)列中獲取日志信息時(shí),是從隊(duì)頭獲取一個(gè)日志信息。
[0036] 本發(fā)明實(shí)施例提供的一種日志信息的輸出方法,首先獲取多個(gè)應(yīng)用線程輸出的多 個(gè)曰志息,然后依次將所述多個(gè)日志信息中的每一個(gè)日志信息,緩存到系統(tǒng)線程建立的 曰志彳旨息緩存隊(duì)列中,最后將位于所述日志信息緩存隊(duì)列隊(duì)頭的日志信息配置到日志信息 共享文件中。與目前各個(gè)線程是按照一定順序?qū)⒏髯暂敵龅娜罩拘畔⒅苯优渲迷谌罩拘畔?共享文件中,即當(dāng)某一個(gè)線程正在將輸出的日志信息配置到日志信息共享文件中時(shí),其它 線程必須等到該線程對(duì)日志信息共享文件的配置操作完成后,才能向日志信息共享文件中 再次配置日志信息相比,本發(fā)明實(shí)施例通過(guò)配置獨(dú)立的系統(tǒng)線程建立并維護(hù)一個(gè)日志信息 緩存隊(duì)列,并且通過(guò)系統(tǒng)線程從該日志信息緩存隊(duì)列獲取日志信息,并將獲取到的日志信 息配置在日志信息共享文件中,使得其它線程只需要將輸出的日志信息緩存在該日志信息 緩存隊(duì)列中后,就可以立刻執(zhí)行其他任務(wù),而不用等待將輸出的日志信息配置在日志信息 共享文件中的操作完成后,才能執(zhí)行其他任務(wù),從而可以提高各線程的任務(wù)執(zhí)行效率和執(zhí) 行性能。
[0037]進(jìn)一步地,本發(fā)明實(shí)施例提供另一種日志信息的輸出方法,如圖2所示,所述方法 包括:
[0038] 201、獲取多個(gè)應(yīng)用線程輸出的多個(gè)日志信息。
[0039]其中,在每一個(gè)應(yīng)用線程運(yùn)行時(shí)都會(huì)有大量的日志信息輸出,日志信息用于記錄 各個(gè)應(yīng)用線程運(yùn)行過(guò)程中進(jìn)行各種操作的結(jié)果數(shù)據(jù)。
[0040] 202a、依次將所述多個(gè)日志信息中的每一個(gè)日志信息,緩存到系統(tǒng)線程建立的曰 志信息緩存隊(duì)列中。
[0041]其中,所述系統(tǒng)線程用于建立和維護(hù)所述日志信息緩存隊(duì)列。所述日志信息緩存 隊(duì)列可以用于保存不同應(yīng)用線程輸出的日志信息,日志信息緩存隊(duì)列中保存日志信息的形 式具體可以為保存日志信息對(duì)應(yīng)的內(nèi)存地址。日志信息緩存隊(duì)列的大小具體可以根據(jù)終端 設(shè)備的內(nèi)存大小來(lái)定,日志信息緩存隊(duì)列的數(shù)據(jù)結(jié)構(gòu)具體可以參考圖1中的數(shù)據(jù)結(jié)構(gòu),在 此不再贅述。
[0042]〇對(duì)于本發(fā)明實(shí)施例,由于各個(gè)應(yīng)用線程將輸出的日志信息緩存在日志信息緩存隊(duì) 列的操作是在內(nèi)存中進(jìn)行的,而在內(nèi)存中進(jìn)行緩存操作的耗時(shí)非常少,因此與各個(gè)應(yīng)用線 程直接將輸出的日志信息配置在日志信息共享文件的操作相比,可以大量減少操作耗時(shí), 從而進(jìn):步提升了各線程的任務(wù)執(zhí)行效率。本發(fā)明實(shí)施例中的日志信息緩存隊(duì)列為多線程 下的共享資源,因此進(jìn)行將日志信息保存在日志信息緩存隊(duì)列和從日志信息緩存隊(duì)列獲取 日志信息時(shí),都需要對(duì)日志信息緩存隊(duì)列加互斥鎖,從而保證對(duì)共享資源操作的完整性。當(dāng) 操作完成后進(jìn)行解鎖操作。
[0043]對(duì)于本發(fā)明實(shí)施例,由于各個(gè)應(yīng)用線程輸出日志信息的時(shí)間是有先后順序的,因 此優(yōu)選地,步驟202a具體可以為按照所述每一個(gè)日志信息對(duì)應(yīng)的輸出時(shí)間由先到后的順 序,依次將所述每一個(gè)日志信息緩存到所述日志信息緩存隊(duì)列中。其中,將每一個(gè)日志信息 緩存到系統(tǒng)線程建立的日志信息緩存隊(duì)列中的步驟具體可以包括:首先為所述日志信息緩 存隊(duì)列配置互斥鎖,然后將所述日志信息緩存到配置有所述互斥鎖的所述日志信息緩存隊(duì) 列中,最后對(duì)所述日志信息緩存隊(duì)列進(jìn)行解鎖。
[0044] 例如,當(dāng)前有3個(gè)應(yīng)用線程,線程1、線程2、線程3在輸出日志信息,線程1、線程 2、線程3分別輸出的日志信息為日志信息1、日志信息2、日志信息3,按照各個(gè)日志信息輸 出時(shí)間的先后順序進(jìn)行排序后,輸出的日志信息的順序?yàn)槿罩拘畔?、日志信息1、日志信 息3,此時(shí)首先為日志信息緩存隊(duì)列配置互斥鎖,然后將日志信息 2緩存在該日志信息緩存 隊(duì)列中,最后對(duì)日志信息緩存隊(duì)列進(jìn)行解鎖,按照此方式,再依次將日志信息1和日志信息 3緩存在日志信息緩存隊(duì)列中,此時(shí)日志信息緩存隊(duì)列中各個(gè)日志信息的排列順序可以如 圖5所示。
[0045]與步驟20?并列的步驟2〇2b、若不存在日志信息,則將所述系統(tǒng)線程配置為掛起 狀態(tài)。
[0046]其中,通過(guò)將系統(tǒng)線程配置為掛起狀態(tài),可以節(jié)省系統(tǒng)線程所占用的系統(tǒng)資源,從 而可以為其它應(yīng)用線程提供更多的系統(tǒng)資源,從而進(jìn)一步提升各個(gè)應(yīng)用線程的任務(wù)執(zhí)行效 率。
[0047] 進(jìn)一步地,當(dāng)該系統(tǒng)線程判斷有應(yīng)用線程對(duì)日志信息緩存隊(duì)列進(jìn)行緩存操作時(shí), 該系統(tǒng)線程重新進(jìn)入正常工作狀態(tài)。其中,應(yīng)用線程可以通過(guò)向系統(tǒng)線程發(fā)送入隊(duì)提示消 息以喚醒系統(tǒng)線程進(jìn)入正常工作狀態(tài)。
[0048] 203、將位于所述日志信息緩存隊(duì)列隊(duì)頭的日志信息配置到日志信息共享文件中。
[0049]其中,日志信息共享文件具體可以為設(shè)備文件或者普通文件,可以用于保存各個(gè) 線程輸出的日志信息。本發(fā)明實(shí)施例中的日志信息緩存隊(duì)列具體可以為先入先出隊(duì)列,因 此每一次在從日志信息緩存隊(duì)列中獲取日志信息時(shí),是從隊(duì)頭獲取一個(gè)日志信息。
[0050]對(duì)于本發(fā)明實(shí)施例,從日志信息緩存隊(duì)列中獲取日志信息的具體程序?qū)崿F(xiàn)過(guò)程可 以包括:從日志信息緩存隊(duì)列獲取日志信息之前,首先對(duì)該日志信息緩存隊(duì)列加互斥鎖,然 后取出出隊(duì)下標(biāo)位置為head的queue數(shù)組中的日志信息,并將head值加1,以使得日志信 息指針指向下一個(gè)日志信息的出隊(duì)位置,然后對(duì)日志信息緩存隊(duì)列進(jìn)行解鎖,完成本次日 志信息的獲取操作。當(dāng)需要從日志信息緩存隊(duì)列中再次獲取日志信息時(shí),首先對(duì)日志信息 緩存隊(duì)列加互斥鎖,然后獲取上述日志信息指針指向的下一個(gè)出隊(duì)位置上的日志信息,并 再次將head值加1,以使得日志信息指針指向下一個(gè)日志信息的出隊(duì)位置,然后對(duì)日志信 息緩存隊(duì)列進(jìn)行解鎖,以完成本次日志信息的獲取操作。依次類推,直到將日志信息緩存隊(duì) 列中緩存的日志信息全部取出。
[0051] 其中,判斷日志信息緩存隊(duì)列是否還存在日志信息的步驟具體可以包括:當(dāng)取出 出隊(duì)下標(biāo)位置為head的queue數(shù)組中的日志信息,并將head值加1后,首先判斷當(dāng)前head 的值是否等于數(shù)組最大長(zhǎng)度,若等于數(shù)組最大長(zhǎng)度,則將head值配置為0,然后判斷head值 是否等于tail值,若不等于數(shù)組最大長(zhǎng)度,則直接判斷head值是否等于tail值,當(dāng)head值 等于tail值時(shí),說(shuō)明該日志信息緩存隊(duì)列中一直在進(jìn)行日志信息的出隊(duì)操作,但是日志信 息緩存隊(duì)列中沒(méi)有新的日志信息進(jìn)行入隊(duì)操作,或者進(jìn)行出隊(duì)操作的日志信息的數(shù)量大于 進(jìn)行入隊(duì)操作的日志信息的數(shù)量,并且數(shù)量差值等于日志信息緩存隊(duì)列中可緩存的日志信 息數(shù)量的上限,從而使得日志彳旨息緩存隊(duì)列中緩存的日志信息全部被取出,此時(shí),將empty 標(biāo)志位配置為true,以標(biāo)識(shí)當(dāng)前隊(duì)列為空。當(dāng)head值不等于tail值時(shí),說(shuō)明該緩存隊(duì)列 中進(jìn)行入隊(duì)操作的日志信息的數(shù)量與進(jìn)行出隊(duì)操作的日志信息的數(shù)量保持平衡,將empty 標(biāo)志位配置為false,以標(biāo)識(shí)當(dāng)前日志信息緩存隊(duì)列不為空,還緩存有可以被獲取的日志信 息。
[0052] 204、釋放所述日志信息在所述日志信息緩存隊(duì)列中對(duì)應(yīng)的內(nèi)存空間。
[0053]其中,通過(guò)釋放日志信息在日志信息緩存隊(duì)列中對(duì)應(yīng)的內(nèi)存空間,可以為其它線 程提供保存待輸出日志信息的內(nèi)存空間,保證日志信息緩存隊(duì)列內(nèi)存空間的可持續(xù)性。 [0054]本發(fā)明實(shí)施例提供的另一種日志信息的輸出方法,首先獲取多個(gè)應(yīng)用線程輸出的 多個(gè)日志信息,然后依次將所述多個(gè)日志信息中的每一個(gè)日志信息,緩存到系統(tǒng)線程建立 的日志信息緩存隊(duì)列中,最后將位于所述日志信息緩存隊(duì)列隊(duì)頭的日志信息配置到日志信 息共享文件中。與目前各個(gè)線程是按照一定順序?qū)⒏髯暂敵龅娜罩拘畔⒅苯优渲迷谌罩拘?息共享文件中,即當(dāng)某一個(gè)線程正在將輸出的日志信息配置到日志信息共享文件中時(shí),其 它線程必須等到該線程對(duì)日志信息共享文件的配置操作完成后,才能向日志信息共享文件 中再次配置日志信息相比,本發(fā)明實(shí)施例通過(guò)配置獨(dú)立的系統(tǒng)線程建立并維護(hù)一個(gè)日志信 息緩存隊(duì)列,并且通過(guò)系統(tǒng)線程從該日志信息緩存隊(duì)列獲取日志信息,并將獲取到的日志 信息配置在日志信息共享文件中,使得其它線程只需要將輸出的日志信息緩存在該日志信 息緩存隊(duì)列中后,就可以立刻執(zhí)行其他任務(wù),而不用等待將輸出的日志信息配置在日志信 息共孚文件中的操作完成后,才能執(zhí)行其他任務(wù),從而可以提高各線程的任務(wù)執(zhí)行效率和 執(zhí)行性能。
[0055]進(jìn)一步地,作為圖1所示方法的具體實(shí)現(xiàn),本發(fā)明實(shí)施例提供一種日志信息的輸 出裝置,可以應(yīng)用于終端設(shè)備中,例如應(yīng)用于手機(jī)、計(jì)算機(jī)、電腦本等,如圖3所示,所述裝 置包括:獲取單元31、緩存單元32、配置單元33。
[0056]獲取單元31,可以用于獲取多個(gè)應(yīng)用線程輸出的多個(gè)日志信息。
[0057]緩存單兀32,可以用于依次將所述獲取單元31獲取的多個(gè)日志信息中的每一個(gè) 曰志信息,緩存到系統(tǒng)線程建立的日志信息緩存隊(duì)列中。
[0058]配置單元33,可以用于將所述緩存單元32緩存的位于所述日志信息緩存隊(duì)列隊(duì) 頭的日志信息配置到日志信息共享文件中。
[0059]需要說(shuō)明的是,本發(fā)明實(shí)施例提供的日志信息的輸出裝置所涉及各功能單元的其 他相應(yīng)描述,可以參考圖1中的對(duì)應(yīng)描述,在此不再贅述。
[0060]再進(jìn)一步地,作為圖2所示方法的具體實(shí)現(xiàn),本發(fā)明實(shí)施例提供另一種日志信息 的輸出裝置,可以應(yīng)用于終端設(shè)備中,例如應(yīng)用于手機(jī)、計(jì)算機(jī)、電腦本等,如圖4所示,所 述裝置包括:獲取單元41、緩存單元42、配置單元43、創(chuàng)建單元44、解鎖單元45、釋放單元 46。
[0061] 獲取單元41,可以用于獲取多個(gè)應(yīng)用線程輸出的多個(gè)日志信息。
[0062] 緩存單元42,可以用于依次將所述獲取單元41獲取的多個(gè)日志信息中的每一個(gè) 日志信息,緩存到系統(tǒng)線程建立的日志信息緩存隊(duì)列中。
[0063]配置單元43,可以用于將所述緩存單元42緩存的位于所述日志信息緩存隊(duì)列隊(duì) 頭的日志信息配置到日志信息共享文件中。
[0064] 創(chuàng)建單元44,可以用于創(chuàng)建所述系統(tǒng)線程,所述系統(tǒng)線程用于建立和維護(hù)所述日 志信息緩存隊(duì)列。
[0065] 緩存單元42,可以用于按照所述每一個(gè)日志信息對(duì)應(yīng)的輸出時(shí)間由先到后的順 序,依次將所述每一個(gè)日志信息緩存到所述日志信息緩存隊(duì)列中。
[0066] 配置單元43,可以用于為所述日志信息緩存隊(duì)列配置互斥鎖。
[0067]緩存單元42,可以用于將所述日志信息緩存到配置有互斥鎖的所述日志信息緩存 隊(duì)列中。
[0068] 解鎖單元45,可以用于對(duì)所述日志信息緩存隊(duì)列進(jìn)行解鎖。
[0069]配置單元《,坯可以用于若不存在日志信息,則將所述系統(tǒng)線程配置為掛起狀態(tài)。
[0070] 釋放單元46,可以用于釋放所述日志信息在所述日志信息緩存隊(duì)列中對(duì)應(yīng)的內(nèi)存 空間。
[0071] 需要說(shuō)明的是,本發(fā)明實(shí)施例提供的日志信息的輸出裝置所涉及各功能單元的其 他相應(yīng)描述,可以參考圖2中的對(duì)應(yīng)描述,在此不再贅述。
[0072]本發(fā)明實(shí)施例提供的日志信息的輸出裝置,首先獲取多個(gè)應(yīng)用線程輸出的多個(gè)日 志信息,然后依次將所述多個(gè)日志信息中的每一個(gè)日志信息,緩存到系統(tǒng)線程建立的日志 信息緩存隊(duì)列中,最后將位于所述日志信息緩存隊(duì)列隊(duì)頭的日志信息配置到日志信息共享 文件中。與目前各個(gè)線程是按照一定順序?qū)⒏髯暂敵龅娜罩拘畔⒅苯优渲迷谌罩拘畔⒐蚕?文件中,即當(dāng)某一個(gè)線程正在將輸出的日志信息配置到日志信息共享文件中時(shí),其它線程 必須等到該線程對(duì)日志信息共享文件的配置操作完成后,才能向日志信息共享文件中再次 配置日志信息相比,本發(fā)明實(shí)施例通過(guò)配置獨(dú)立的系統(tǒng)線程建立并維護(hù)一個(gè)日志信息緩存 隊(duì)列,并且通過(guò)系統(tǒng)線程從該日志信息緩存隊(duì)列獲取日志信息,并將獲取到的日志信息配 置在日志信息共享文件中,使得其它線程只需要將輸出的日志信息緩存在該日志信息緩存 隊(duì)列中后,就可以立刻執(zhí)行其他任務(wù),而不用等待將輸出的日志信息配置在日志信息共享 文件中的操作完成后,才能執(zhí)行其他任務(wù),從而可以提高各線程的任務(wù)執(zhí)行效率和執(zhí)行性 能。
[0073] 本發(fā)明實(shí)施例提供的日志信息的輸出裝置可以實(shí)現(xiàn)上述提供的方法實(shí)施例,具體 功能實(shí)現(xiàn)請(qǐng)參見(jiàn)方法實(shí)施例中的說(shuō)明,在此不再贅述。本發(fā)明實(shí)施例提供的日志信息的輸 出方法及裝置可以適用于信息【技術(shù)領(lǐng)域】,但不僅限于此。
[0074] 本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以 通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì) 中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁 碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory, ROM)或隨機(jī)存儲(chǔ)記憶體(Random Access Memory,RAM)等^
[0075]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何 熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng) 涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1. 一種日志信息的輸出方法,其特征在于,包括: 獲取多個(gè)應(yīng)用線程輸出的多個(gè)日志信息; 依次將所述多個(gè)日志信息中的每一個(gè)日志信息,緩存到系統(tǒng)線程建立的日志信息緩存 隊(duì)列中; 將位于所述日志信息緩存隊(duì)列隊(duì)頭的日志信息配置到日志信息共享文件中。
2. 根據(jù)權(quán)利要求1所述的日志信息的輸出方法,其特征在于,所述獲取多個(gè)應(yīng)用線程 輸出的多個(gè)日志信息的步驟之前,還包括: 創(chuàng)建所述系統(tǒng)線程,所述系統(tǒng)線程用于建立和維護(hù)所述日志信息緩存隊(duì)列。
3. 根據(jù)權(quán)利要求1所述的日志信息的輸出方法,其特征在于,所述依次將所述多個(gè)日 志信息中的每一個(gè)日志信息,緩存到系統(tǒng)線程建立的日志信息緩存隊(duì)列中的步驟包括: 按照所述每一個(gè)日志信息對(duì)應(yīng)的輸出時(shí)間由先到后的順序,依次將所述每一個(gè)日志信 息緩存到所述日志信息緩存隊(duì)列中。
4. 根據(jù)權(quán)利要求3所述的日志信息的輸出方法,其特征在于,所述將每一個(gè)日志信息 緩存到系統(tǒng)線程建立的日志信息緩存隊(duì)列中的步驟包括: 為所述日志信息緩存隊(duì)列配置互斥鎖; 將所述日志信息緩存到配置有所述互斥鎖的所述日志信息緩存隊(duì)列中; 對(duì)所述日志信息緩存隊(duì)列進(jìn)行解鎖。
5. 根據(jù)權(quán)利要求1所述的日志信息的輸出方法,其特征在于,所述獲取多個(gè)應(yīng)用線程 輸出的多個(gè)日志信息的步驟之后,還包括: 若不存在日志信息,則將所述系統(tǒng)線程配置為掛起狀態(tài)。
6. 根據(jù)權(quán)利要求1所述的日志信息的輸出方法,其特征在于,所述將位于所述日志信 息緩存隊(duì)列隊(duì)頭的日志信息配置到日志信息共享文件中的步驟之后,還包括: 釋放所述日志信息在所述日志信息緩存隊(duì)列中對(duì)應(yīng)的內(nèi)存空間。
7. -種日志信息的輸出裝置,其特征在于,包括: 獲取單元,用于獲取多個(gè)應(yīng)用線程輸出的多個(gè)日志信息; 緩存單元,用于依次將所述獲取單元獲取的多個(gè)日志信息中的每一個(gè)日志信息,緩存 到系統(tǒng)線程建立的日志信息緩存隊(duì)列中; 配置單元,用于將所述緩存單元緩存的位于所述日志信息緩存隊(duì)列隊(duì)頭的日志信息配 置到日志信息共享文件中。
8. 根據(jù)權(quán)利要求7所述的日志信息的輸出裝置,其特征在于,所述裝置還包括: 創(chuàng)建單元,用于創(chuàng)建所述系統(tǒng)線程,所述系統(tǒng)線程用于建立和維護(hù)所述日志信息緩存 隊(duì)列。
9. 根據(jù)權(quán)利要求7所述的日志信息的輸出裝置,其特征在于, 所述緩存單元,用于按照所述每一個(gè)日志信息對(duì)應(yīng)的輸出時(shí)間由先到后的順序,依次 將所述每一個(gè)日志信息緩存到所述日志信息緩存隊(duì)列中。
10. 根據(jù)權(quán)利要求9所述的日志信息的輸出裝置,其特征在于,所述裝置還包括:解鎖 單元; 所述配置單元,還用于為所述日志信息緩存隊(duì)列配置互斥鎖; 所述緩存單元,用于將所述日志信息緩存到配置有互斥鎖的所述日志信息緩存隊(duì)列 中; 所述解鎖單元,用于對(duì)所述日志信息緩存隊(duì)列進(jìn)行解鎖。
11. 根據(jù)權(quán)利要求7所述的日志信息的輸出裝置,其特征在于, 所述配置單元,還用于若不存在日志信息,則將所述系統(tǒng)線程配置為掛起狀態(tài)。
12. 根據(jù)權(quán)利要求7所述的日志信息的輸出裝置,其特征在于,所述裝置還包括: 釋放單元,用于釋放所述日志信息在所述日志信息緩存隊(duì)列中對(duì)應(yīng)的內(nèi)存空間。
【文檔編號(hào)】G06F11/34GK104252405SQ201310260929
【公開(kāi)日】2014年12月31日 申請(qǐng)日期:2013年6月26日 優(yōu)先權(quán)日:2013年6月26日
【發(fā)明者】李思廣 申請(qǐng)人:騰訊科技(深圳)有限公司