国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于Linux消息隊(duì)列的日志處理方法

      文檔序號(hào):6523677閱讀:157來源:國知局
      一種基于Linux消息隊(duì)列的日志處理方法
      【專利摘要】本發(fā)明提供一種基于Linux消息隊(duì)列的日志處理方法,包括以下步驟:創(chuàng)建日志處理系統(tǒng);使用該日志處理系統(tǒng)對日志進(jìn)行處理。該一種基于Linux消息隊(duì)列的日志處理方法和現(xiàn)有技術(shù)相比,能夠簡單、方便的記錄日志;對并行軟件執(zhí)行過程中產(chǎn)生的日志信息進(jìn)行更加精確的控制和記錄,以反映并行程序運(yùn)行過程中各個(gè)事件產(chǎn)生的時(shí)間和順序,使得在Linux操作系統(tǒng)中,能夠提供一種滿足更高要求的日志處理系統(tǒng),并且解決用戶需求多樣化和細(xì)致化的問題;實(shí)用性強(qiáng),易于推廣。
      【專利說明】—種基于L i nux消息隊(duì)列的日志處理方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及計(jì)算機(jī)應(yīng)用【技術(shù)領(lǐng)域】,具體的說是一種基于Linux消息隊(duì)列的日志處
      理方法。
      【背景技術(shù)】
      [0002]目前在Linux操作系統(tǒng)中,存在很多日志處理系統(tǒng)。在軟件的執(zhí)行過程中記錄日志是一種記錄軟件執(zhí)行過程和行為,進(jìn)而調(diào)試軟件、排查問題的有效方式。對于解決軟件執(zhí)行過程中因遇到異常事件而產(chǎn)生的難以復(fù)現(xiàn)的錯(cuò)誤等具有什么重要的作用。然而,大部分日志處理系統(tǒng)并不支持多個(gè)進(jìn)程和線程同時(shí)向同一個(gè)日志文件記錄日志信息。而有些時(shí)候,軟件設(shè)計(jì)和開發(fā)人員希望能夠?qū)⒍鄠€(gè)進(jìn)程或線程的執(zhí)行過程寫到同一個(gè)日志文件中,以便更好地反映程序執(zhí)行的過程,方便日志的記錄和查看。
      [0003]比如某個(gè)軟件有多個(gè)進(jìn)程在運(yùn)行,若為每一個(gè)進(jìn)程創(chuàng)建一個(gè)日志文件,則對日志信息的管理和維護(hù)帶來了很多不便,也使得查看日志信息變得麻煩。另外,通常日志信息記錄的時(shí)間都是精確到秒,而在一秒內(nèi)可能會(huì)產(chǎn)生很多的日志信息,這樣就無法區(qū)分多個(gè)進(jìn)程在這一秒內(nèi)執(zhí)行的先后順序,因?yàn)樗鼈兎植荚诓煌奈募?,并且?biāo)記著相同的時(shí)間。在處理死鎖和同步問題時(shí),這一點(diǎn)顯得尤為重要,因?yàn)樵谶@樣的情況下,事件發(fā)生的先后順序正是發(fā)現(xiàn)和解決問題的關(guān)鍵。另外,有的軟件可能由多個(gè)進(jìn)程組成,而每個(gè)進(jìn)程又可能由多個(gè)線程組成,這樣對其并行運(yùn)行過程中產(chǎn)生的日志信息的處理就更為復(fù)雜。在硬件所能提供的并行處理能力不斷提高的情況下,軟件的并行執(zhí)行已經(jīng)成為必然的趨勢,這已是不爭的事實(shí)??梢姡诋?dāng)今的軟件設(shè)計(jì)和實(shí)現(xiàn)當(dāng)中,能夠?qū)⒍鄠€(gè)進(jìn)程和多個(gè)線程產(chǎn)生的日志信息寫入到同一個(gè)文件的日志處理系統(tǒng)是十分必要的。

      【發(fā)明內(nèi)容】

      [0004]本發(fā)明的技術(shù)任務(wù)是解決現(xiàn)有技術(shù)的不足,提供一種基于Linux消息隊(duì)列的日志處理方法。
      [0005]本發(fā)明的技術(shù)方案是按以下方式實(shí)現(xiàn)的,該一種基于Linux消息隊(duì)列的日志處理方法,其具體處理過程為:
      一、創(chuàng)建日志處理系統(tǒng):
      1)在Linux操作系統(tǒng)中,將系統(tǒng)接受日志文件的路徑作為參數(shù);
      2)若路徑為相對路徑,則將其轉(zhuǎn)化為絕對路徑;
      3)創(chuàng)建一個(gè)無名管道,用于將要?jiǎng)?chuàng)建的日志服務(wù)進(jìn)程與現(xiàn)有進(jìn)程的通信;
      4)創(chuàng)建一個(gè)新的進(jìn)程,使其存在父、子兩個(gè)進(jìn)程;
      5)子進(jìn)程關(guān)閉無名管道的讀端描述符;
      6)父進(jìn)程關(guān)閉無名管道的寫端描述符;
      7)若父進(jìn)程在超時(shí)時(shí)間內(nèi)從管道讀端未讀到日志系統(tǒng)啟動(dòng)成功標(biāo)志,則結(jié)束子進(jìn)程的運(yùn)行,并返回錯(cuò)誤; 8)若父進(jìn)程在超時(shí)時(shí)間內(nèi)從管道讀端讀到日志系統(tǒng)啟動(dòng)成功標(biāo)志,則為該進(jìn)程注冊退出處理函數(shù),之后進(jìn)行其它處理流程;
      9)子進(jìn)程為各信號(hào)設(shè)置處理函數(shù),為SIGALRM信號(hào)設(shè)置處理函數(shù)作用為日志輪轉(zhuǎn),為SI⑶SRl信號(hào)設(shè)置信號(hào)處理函數(shù)為退出日志系統(tǒng)信號(hào);
      10)子進(jìn)程將日志路徑通過哈希算法得到一個(gè)4個(gè)字節(jié)的整型值,作為創(chuàng)建消息隊(duì)列的鍵值;
      11)子進(jìn)程按步驟10)中所得到的哈希值作為鍵值創(chuàng)建消息隊(duì)列;
      二、對日志進(jìn)行處理:
      12)子進(jìn)程創(chuàng)建日志文件,若日志文件所在路徑中,有目錄不存在,則一并創(chuàng)建;
      13)日志處理系統(tǒng)向管道寫段寫入啟動(dòng)成功標(biāo)志后,關(guān)閉管道寫端;
      14)日志處理系統(tǒng)根據(jù)當(dāng)前時(shí)間,設(shè)置鬧鐘信號(hào);
      15)日志處理系統(tǒng)接收消息隊(duì)列發(fā)送端的消息;
      16)日志處理系統(tǒng)為消息加上時(shí)間戳后寫入到文件中;
      17)日志處理系統(tǒng)回到步驟15);
      18)若日志處理系統(tǒng)達(dá)到日志輪轉(zhuǎn)時(shí)間,會(huì)收到SIGALRM信號(hào),該信號(hào)的處理函數(shù)會(huì)以當(dāng)天日期為名字創(chuàng)建一個(gè)目錄,之后將日志文件移至該目錄。
      [0006]所述日志處理系統(tǒng)每次最多寫入4K字節(jié)的日志信息。
      [0007]本發(fā)明與現(xiàn)有技術(shù)相比所產(chǎn)生的有益效果是:
      本發(fā)明的一種基于Linux消息隊(duì)列的日志處理方法可以將多個(gè)進(jìn)程或線程產(chǎn)生的日志信息寫入到同一個(gè)日志文件中,并且支持多進(jìn)程與多線程混合情況下向同一個(gè)日志文件記錄日志;本發(fā)明還提供了簡單易用的函數(shù)調(diào)用接口,以實(shí)現(xiàn)使用的方便;使用該系統(tǒng),能夠簡單、方便的記錄日志;對并行軟件執(zhí)行過程中產(chǎn)生的日志信息進(jìn)行更加精確的控制和記錄,以反映并行程序運(yùn)行過程中各個(gè)事件產(chǎn)生的時(shí)間和順序,使得在Linux操作系統(tǒng)中,能夠提供一種滿足更高要求的日志處理系統(tǒng),并且解決用戶需求多樣化和細(xì)致化的問題;實(shí)用性強(qiáng),易于推廣。
      【具體實(shí)施方式】
      [0008]下面對本發(fā)明的一種基于Linux消息隊(duì)列的日志處理方法作以下詳細(xì)說明。
      [0009]本發(fā)明提供一種基于Linux消息隊(duì)列的日志處理方法,可以將多個(gè)進(jìn)程或線程產(chǎn)生的日志信息寫入到同一個(gè)日志文件中,并且支持多進(jìn)程與多線程混合情況下向同一個(gè)日志文件記錄日志,其具體處理過程為:
      I)在Linux操作系統(tǒng)中,將系統(tǒng)接受日志文件的路徑作為參數(shù)。
      [0010]2)若路徑為相對路徑,則將其轉(zhuǎn)化為絕對路徑。
      [0011]3)創(chuàng)建一個(gè)無名管道,用于將要?jiǎng)?chuàng)建的日志服務(wù)進(jìn)程與現(xiàn)有進(jìn)程的通信。
      [0012]4)創(chuàng)建一個(gè)新的進(jìn)程,使其存在父、子兩個(gè)進(jìn)程。
      [0013]5)子進(jìn)程關(guān)閉無名管道的讀端描述符。
      [0014]6)父進(jìn)程關(guān)閉無名管道的寫端描述符。
      [0015]7)若父進(jìn)程在超時(shí)時(shí)間內(nèi)從管道讀端未讀到日志系統(tǒng)啟動(dòng)成功標(biāo)志,則結(jié)束子進(jìn)程的運(yùn)行,并返回錯(cuò)誤。[0016]8)若父進(jìn)程在超時(shí)時(shí)間內(nèi)從管道讀端讀到日志系統(tǒng)啟動(dòng)成功標(biāo)志,則為該進(jìn)程注冊退出處理函數(shù),之后進(jìn)行其它處理流程。
      [0017]9)子進(jìn)程為各信號(hào)設(shè)置處理函數(shù),為SIGALRM信號(hào)設(shè)置處理函數(shù)作用為日志輪轉(zhuǎn),為SI⑶SRl信號(hào)設(shè)置信號(hào)處理函數(shù)為退出日志系統(tǒng)信號(hào),該SIGALRM信號(hào)是給程序注冊的信號(hào)。
      [0018]10)子進(jìn)程將日志路徑通過哈希算法得到一個(gè)4個(gè)字節(jié)的整型值,作為創(chuàng)建消息隊(duì)列的鍵值。
      [0019]11)子進(jìn)程按步驟10)中所得到的哈希值作為鍵值創(chuàng)建消息隊(duì)列。
      [0020]12)子進(jìn)程創(chuàng)建日志文件,若日志文件所在路徑中,有目錄不存在,則一并創(chuàng)建。
      [0021]13)日志處理系統(tǒng)向管道寫段寫入啟動(dòng)成功標(biāo)志后,關(guān)閉管道寫端。
      [0022]14)日志處理系統(tǒng)根據(jù)當(dāng)前時(shí)間,設(shè)置鬧鐘信號(hào)。
      [0023]15)日志處理系統(tǒng)接收消息隊(duì)列發(fā)送端的消息。
      [0024]16)日志處理系統(tǒng)為消息加上時(shí)間戳后寫入到文件中。
      [0025]17)日志處理系統(tǒng)回到步驟15)。
      [0026]18)若日志處理系統(tǒng)達(dá)到日志輪轉(zhuǎn)時(shí)間,會(huì)收到SIGALRM信號(hào),該信號(hào)的處理函數(shù)會(huì)以當(dāng)天日期為名字創(chuàng)建一個(gè)目錄,之后將日志文件移至該目錄。
      [0027]所述日志處理系統(tǒng)每次最多寫入4K字節(jié)的日志信息。
      [0028]本發(fā)明支持多進(jìn)程、多線程同時(shí)向同一個(gè)日志文件記錄日志信息,基于Linux消息隊(duì)列技術(shù)的,可判斷日志系統(tǒng)在超時(shí)時(shí)間內(nèi)是否啟動(dòng)成功。在啟動(dòng)日志的進(jìn)程結(jié)束后可自動(dòng)注銷日志系統(tǒng),可設(shè)置記錄日志的級別,可自動(dòng)將記錄日志語句所在的文件名、行號(hào)、函數(shù)名寫入日志中,支持日志輪轉(zhuǎn),在文件或目錄被刪除后可自動(dòng)恢復(fù),實(shí)用性強(qiáng),進(jìn)一步的,上述功能的詳細(xì)處理過程如下所述。
      [0029]本發(fā)明可以將多個(gè)進(jìn)程產(chǎn)生的日志信息寫入到同一個(gè)文件中,使用步驟為: 步驟一、對于一個(gè)多進(jìn)程程序,啟動(dòng)該日志處理系統(tǒng)后,多個(gè)進(jìn)程同時(shí)不停寫日志。
      [0030]步驟二、該日志處理系統(tǒng)會(huì)將多個(gè)進(jìn)程產(chǎn)生的日志寫入到同一個(gè)日志文件中。
      [0031]本發(fā)明可以將多個(gè)線程產(chǎn)生的日志信息寫入到同一個(gè)文件中,使用步驟為: 步驟一、對于一個(gè)多線程程序,啟動(dòng)該日志處理系統(tǒng)后,多個(gè)線程同時(shí)不停寫日志。
      [0032]步驟二、該日志處理系統(tǒng)會(huì)將多個(gè)線程產(chǎn)生的日志寫入到同一個(gè)日志文件中。
      [0033]本發(fā)明可將多個(gè)進(jìn)程和線程產(chǎn)生的日志信息寫入到同一個(gè)文件中,使用步驟為: 步驟一、對于一個(gè)多進(jìn)程和多線程混合的程序,啟動(dòng)該日志處理系統(tǒng)后,多個(gè)進(jìn)程和多
      個(gè)線程同時(shí)不停寫日志。
      [0034]步驟二該日志處理系統(tǒng)會(huì)將多個(gè)進(jìn)程和多個(gè)線程產(chǎn)生的日志寫入到同一個(gè)日志文件中。
      [0035]本發(fā)明可以自動(dòng)重新創(chuàng)建被刪除的日志文件,使用步驟為:
      步驟一、啟動(dòng)該日志處理系統(tǒng),開始向日志文件中寫入日志信息。
      [0036]步驟二、刪除該日志文件,日志處理系統(tǒng)會(huì)自動(dòng)重新創(chuàng)建該日志文件。
      [0037]本發(fā)明可以在設(shè)置的時(shí)間進(jìn)行日志輪轉(zhuǎn),使用步驟為:
      步驟一、啟動(dòng)該日志處理系統(tǒng),開始向日志文件中寫入日志信息。
      [0038]步驟二、到達(dá)日志輪轉(zhuǎn)時(shí)間時(shí),日志處理系統(tǒng)會(huì)自動(dòng)將該日志文件存檔。[0039]本發(fā)明可以自動(dòng)記錄調(diào)用者所在的文件名、行號(hào)和函數(shù)名,使用步驟為:
      步驟一、啟動(dòng)該日志處理系統(tǒng),開始向日志文件中寫入日志信息。
      [0040]步驟二、日志處理系統(tǒng)會(huì)自動(dòng)記錄其所在的文件名、行號(hào)和函數(shù)名。
      [0041]以上所述僅為本發(fā)明的實(shí)施例而已,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
      【權(quán)利要求】
      1.一種基于Linux消息隊(duì)列的日志處理方法,其特征在于其具體處理過程為: 一、創(chuàng)建日志處理系統(tǒng): 1)在Linux操作系統(tǒng)中,將系統(tǒng)接受日志文件的路徑作為參數(shù); 2)若路徑為相對路徑,則將其轉(zhuǎn)化為絕對路徑; 3)創(chuàng)建一個(gè)無名管道,用于將要?jiǎng)?chuàng)建的日志服務(wù)進(jìn)程與現(xiàn)有進(jìn)程的通信; 4)創(chuàng)建一個(gè)新的進(jìn)程,使其存在父、子兩個(gè)進(jìn)程; 5)子進(jìn)程關(guān)閉無名管道的讀端描述符; 6)父進(jìn)程關(guān)閉無名管道的寫端描述符; 7)若父進(jìn)程在超時(shí)時(shí)間內(nèi)從管道讀端未讀到日志系統(tǒng)啟動(dòng)成功標(biāo)志,則結(jié)束子進(jìn)程的運(yùn)行,并返回錯(cuò)誤; 8)若父進(jìn)程在超時(shí)時(shí)間內(nèi)從管道讀端讀到日志系統(tǒng)啟動(dòng)成功標(biāo)志,則為該進(jìn)程注冊退出處理函數(shù),之后進(jìn)行其它處理流程; 9)子進(jìn)程為各信號(hào)設(shè)置處理函數(shù),為SIGALRM信號(hào)設(shè)置處理函數(shù)作用為日志輪轉(zhuǎn),為SI⑶SRl信號(hào)設(shè)置信號(hào)處理函數(shù)為退出日志系統(tǒng)信號(hào); 10)子進(jìn)程將日志路徑通過哈希算法得到一個(gè)4個(gè)字節(jié)的整型值,作為創(chuàng)建消息隊(duì)列的鍵值; 11)子進(jìn)程按步驟10)中所得到的哈希值作為鍵值創(chuàng)建消息隊(duì)列; 二、對日志進(jìn)行處理: 12)子進(jìn)程創(chuàng)建日志文件,若日志文件所在路徑中,有目錄不存在,則一并創(chuàng)建; 13)日志處理系統(tǒng)向管道寫段寫入啟動(dòng)成功標(biāo)志后,關(guān)閉管道寫端; 14)日志處理系統(tǒng)根據(jù)當(dāng)前時(shí)間,設(shè)置鬧鐘信號(hào); 15)日志處理系統(tǒng)接收消息隊(duì)列發(fā)送端的消息; 16)日志處理系統(tǒng)為消息加上時(shí)間戳后寫入到文件中; 17)日志處理系統(tǒng)回到步驟15); 18)若日志處理系統(tǒng)達(dá)到日志輪轉(zhuǎn)時(shí)間,會(huì)收到SIGALRM信號(hào),該信號(hào)的處理函數(shù)會(huì)以當(dāng)天日期為名字創(chuàng)建一個(gè)目錄,之后將日志文件移至該目錄。
      2.根據(jù)權(quán)利要求1所述的一種基于Linux消息隊(duì)列的日志處理方法,其特征在于:所述日志處理系統(tǒng)每次最多寫入4K字節(jié)的日志信息。
      【文檔編號(hào)】G06F11/34GK103838624SQ201310684489
      【公開日】2014年6月4日 申請日期:2013年12月16日 優(yōu)先權(quán)日:2013年12月16日
      【發(fā)明者】劉續(xù)東 申請人:浪潮電子信息產(chǎn)業(yè)股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
      1