国产精品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>

      一種多線程的日志處理方法與流程

      文檔序號(hào):40222181發(fā)布日期:2024-12-06 16:41閱讀:14來(lái)源:國(guó)知局
      一種多線程的日志處理方法與流程

      本發(fā)明涉及日志數(shù)據(jù)的處理領(lǐng)域,特別是涉及一種多線程的日志處理方法。


      背景技術(shù):

      1、在系統(tǒng)級(jí)項(xiàng)目中,需要涉及到的功能和數(shù)據(jù)處理復(fù)雜,因此,為了調(diào)試或者事后進(jìn)行系統(tǒng)的功能點(diǎn)及流程等的分析,常常需要將每一個(gè)關(guān)鍵點(diǎn)記錄日志或者打印日志,日志的內(nèi)容會(huì)越來(lái)越多,保存日志的文件也會(huì)越來(lái)越大。

      2、對(duì)于需要多次上、下電的系統(tǒng)項(xiàng)目,可能日志還不僅僅需要記錄本次的日志,還需要在每一次設(shè)備重新上電后,記錄關(guān)于本次上電后的日志,如果能在日志文件名中體現(xiàn)出有關(guān)上、下電的的信息,這樣方便分析和定位問(wèn)題。

      3、通常記錄的日志有:操作過(guò)程日志、錯(cuò)誤信息日志、提示信息日志、致命日志等等。日志的處理方式有在線終端打印,或者記錄于日志文件中。

      4、程序的版本也分為調(diào)試階段和發(fā)布階段。處于不同階段的日志處理方式也不盡相同。比如,調(diào)試階段的日志,主要是為了分析流程,看流程是否按照期望的結(jié)果在進(jìn)行,中間是否有出錯(cuò)的地方等等,這樣打印的日志信息就會(huì)比發(fā)布階段的日志內(nèi)容多很多。當(dāng)項(xiàng)目進(jìn)入發(fā)布階段,一些調(diào)試性的信息就不再需要頻繁的打印,而是打印關(guān)鍵的信息即可。那么,這些之前的日志在程序中直接刪除掉也是不可取的,之后為了版本更新或者功能迭代,可能還需要重新啟用這些被屏蔽掉的日志。如果,單純的通過(guò)注釋來(lái)完成屏蔽,那么也是費(fèi)事耗力的。

      5、在多線程中,日志的記錄更為棘手,大體分為兩種情況處理日志文件。1、為了實(shí)現(xiàn)日志的統(tǒng)一記錄,因此,通常可能需要將系統(tǒng)的所有日志都保存在同一個(gè)文件中,方便流程上的記錄統(tǒng)一,也方便分析和發(fā)現(xiàn)問(wèn)題??墒嵌嗑€程中,每一個(gè)線程都有日志在記錄,需要訪問(wèn)同一個(gè)文件,那么誰(shuí)先誰(shuí)后是個(gè)問(wèn)題,需要做到線程間互斥。當(dāng)一個(gè)線程正在訪問(wèn)日志文件時(shí),另一個(gè)線程需要等待。2、不同線程的日志存在不同的文件,或者線程指定規(guī)劃入同一個(gè)日志文件中。

      6、作為一個(gè)文件,那么就一定有文件大小。存日志到文件中不可能無(wú)休止的一直存,文件如果太大,打開文件都會(huì)變得很慢,更別說(shuō)在這樣龐大數(shù)據(jù)量里面查看關(guān)鍵信息,搜索等操作也會(huì)變得很慢。所以,也涉及到文件大小到多少時(shí),需要分日志文件繼續(xù)保存系統(tǒng)的日志。新的日志的文件名如果需要調(diào)用者來(lái)重新規(guī)劃,不僅增加工作量,也增加了時(shí)機(jī)的把控難度。


      技術(shù)實(shí)現(xiàn)思路

      1、本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種多線程的日志處理方法,能夠有效處理多線程環(huán)境下,不同線程之間日志記錄時(shí),訪問(wèn)同一個(gè)日志文件的互斥問(wèn)題。

      2、本發(fā)明的目的是通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn)的:一種多線程的日志處理方法,包括以下步驟:

      3、s1.定義用于進(jìn)行日志保存的結(jié)構(gòu)體s,定義一個(gè)函數(shù)用于創(chuàng)建該結(jié)構(gòu)體的結(jié)構(gòu)體變量;

      4、s2.定義一個(gè)用于多線程共享資源搶占的互斥量m,在初始化結(jié)構(gòu)體變量時(shí),賦值給變量?jī)?nèi)部的互斥量指針,且調(diào)用變量?jī)?nèi)部的互斥量初始化函數(shù)指針來(lái)初始化該互斥量m,同時(shí),賦值結(jié)構(gòu)體變量的日志打印級(jí)別、保存級(jí)別、日志文件的最大size;

      5、s3.在日志保存時(shí),若多個(gè)線程需要相互之間擠占同一個(gè)路徑下日志文件的訪問(wèn)權(quán)限,則各個(gè)線程通過(guò)互斥量m加鎖的方式來(lái)?yè)屨荚摻Y(jié)構(gòu)體變量下寫入日志文件的權(quán)限。

      6、步驟s1中用于進(jìn)行日志保存的結(jié)構(gòu)體包括:

      7、待保存日志的文件名稱、使用者傳入的日志保存路徑、使用者傳入的上電次數(shù)、日志打印級(jí)別、日志保存級(jí)別、日志文件最大字節(jié)數(shù)、當(dāng)前日志文件已經(jīng)存入的數(shù)據(jù)量大小、上電次數(shù)、互斥量、互斥量初始化函數(shù)指針、互斥量銷毀函數(shù)指針和日志處理函數(shù)指針。

      8、優(yōu)選地,所述步驟s1中,定義一個(gè)函數(shù)用于創(chuàng)建該結(jié)構(gòu)體變量;

      9、該函數(shù)內(nèi)主要完成結(jié)構(gòu)體內(nèi)部分成員的初始化,并返回一個(gè)當(dāng)前結(jié)構(gòu)體類型的一個(gè)變量;函數(shù)的入?yún)⒂校河脩魧⒁4娴娜罩疚募幕A(chǔ)路徑,上電次數(shù);

      10、函數(shù)內(nèi)部通過(guò)入?yún)?,整合基礎(chǔ)路徑和上電次數(shù)到日志名稱中,初始化設(shè)置一個(gè)打印和保存日志的級(jí)別,防止用戶創(chuàng)建結(jié)構(gòu)體變量后漏設(shè)置,初始化設(shè)置一個(gè)日志文件的最大size;

      11、并且該函數(shù)保存當(dāng)前日志文件已經(jīng)存入的數(shù)據(jù)量大小、上電次數(shù)、互斥量、互斥量初始化函數(shù)指針、互斥量銷毀函數(shù)指針和日志處理函數(shù)指針。

      12、優(yōu)選地,所述步驟s2中,互斥量,也叫互斥鎖,用于保證共享數(shù)據(jù)對(duì)象操作的完整性,在多線程之間,使對(duì)象在任意時(shí)刻只能由一個(gè)線程操作;

      13、優(yōu)選地,所述步驟s2中,將內(nèi)部成員互斥量的初始化函數(shù)指針,指向一個(gè)已經(jīng)定義好了的初始化函數(shù),在外部調(diào)用該函數(shù)指針時(shí),直接完成對(duì)該函數(shù)的調(diào)用,來(lái)初始化該互斥量m。

      14、優(yōu)選地,結(jié)構(gòu)體中定義函數(shù)指針的目的是為了將該定義的函數(shù)和結(jié)構(gòu)體關(guān)聯(lián)起來(lái)。例如,可以定義一個(gè)名為str的結(jié)構(gòu)體,其中包含一個(gè)函數(shù)指針opt,用于指向執(zhí)行特定操作的函數(shù)。接著,可以定義一個(gè)函數(shù),如add,這個(gè)函數(shù)將實(shí)現(xiàn)具體的操作。在創(chuàng)建結(jié)構(gòu)體變量的函數(shù)實(shí)現(xiàn)時(shí),讓這個(gè)結(jié)構(gòu)體變量中的函數(shù)指針指向已經(jīng)實(shí)現(xiàn)了的這個(gè)add函數(shù)。

      15、所述互斥量初始化函數(shù)指針,指向一個(gè)互斥量初始化函數(shù),該函數(shù)完成對(duì)入?yún)⒅谢コ饬康某跏蓟?/p>

      16、所述互斥量銷毀函數(shù)指針,指向一個(gè)互斥量銷毀函數(shù),該函數(shù)完成對(duì)入?yún)⒒コ饬康匿N毀;

      17、所述日志處理函數(shù)指針,指向一個(gè)日志數(shù)據(jù)處理的函數(shù),該函數(shù)的入?yún)⒂校航Y(jié)構(gòu)體s的變量、日志的等級(jí)、不同等級(jí)的關(guān)鍵字、日志數(shù)據(jù)信息,在日志處理函數(shù)中,取出入?yún)⒔Y(jié)構(gòu)體變量中的互斥量調(diào)用第三方pthread庫(kù)中的互斥量加鎖函數(shù)來(lái)完成加鎖,加鎖成功后,根據(jù)設(shè)置的日志文件最大size、日志保存和打印級(jí)別的判斷,以及日志文件名的更改等一系列操作后,按照是否需要寫入日志文件進(jìn)行處理,最后同樣使用pthread庫(kù)中的互斥量解鎖函數(shù)來(lái)解鎖。

      18、優(yōu)選地,所述步驟s2中,?日志文件的最大size用于日志處理流程中,判斷該值,當(dāng)超過(guò)結(jié)構(gòu)體變量初始化設(shè)置的最大文件字節(jié)數(shù)時(shí),需要分新的文件來(lái)繼續(xù)保存日志數(shù)據(jù);新的文件名稱仍然由用戶傳入的上電次數(shù)和累計(jì)的已經(jīng)存在文件的個(gè)數(shù)組成,便于用戶按照大小查看日志文件,每增加一個(gè)文件,記錄文件個(gè)數(shù)的值遞增;

      19、日志的打印級(jí)別和保存級(jí)別,用于限制能夠打印的日志級(jí)別和能夠保存到文件中的日志級(jí)別。

      20、優(yōu)選地,所述步驟s3包括:

      21、每個(gè)線程中搶占資源之前,通過(guò)互斥量m加鎖,然后享用資源之后,解鎖;由線程庫(kù)中的機(jī)制來(lái)完成誰(shuí)先加到鎖,先加到的先使用,使用完成后釋放,排隊(duì)的其他線程等待這個(gè)線程機(jī)制的分配,依次類推。

      22、優(yōu)選地,所述結(jié)構(gòu)體中的日志處理函數(shù)指針指向的函數(shù),要求使用者傳入當(dāng)前調(diào)用該方法時(shí)使用的日志級(jí)別,在函數(shù)實(shí)現(xiàn)時(shí),當(dāng)調(diào)用時(shí)的級(jí)別大于等于設(shè)置的打印或者保存級(jí)別時(shí),才能打印或者保存,包括:

      23、所述日志級(jí)別是在入?yún)⒅袀魅氲?,使用者自行定義需要的日志等級(jí),同時(shí),使用者按照自己的喜好,自定義不同級(jí)別的日志顯示不一樣的關(guān)鍵字作為入?yún)⑻砑拥饺罩緝?nèi)容中,方便之后通過(guò)關(guān)鍵字查看不同等級(jí)的日志內(nèi)容,或動(dòng)態(tài)傳入日志的內(nèi)容。

      24、本發(fā)明的有益效果是:1、本發(fā)明根據(jù)在日志文件名稱中增加上、下電的次數(shù),解決了多次上、下電系統(tǒng)項(xiàng)目中,無(wú)法區(qū)分各次的日志文件的問(wèn)題。

      25、2、本發(fā)明通過(guò)定義日志的不同使用級(jí)別來(lái)解決從調(diào)試階段到發(fā)布階段需要注釋掉大量不需要的日志的問(wèn)題。一些調(diào)試階段用于記錄過(guò)程和關(guān)鍵數(shù)據(jù)的日志打印,在轉(zhuǎn)為發(fā)布時(shí),需要全部屏蔽掉。

      26、3、本發(fā)明多線程環(huán)境下,不同線程之間日志記錄時(shí),訪問(wèn)同一個(gè)日志文件的互斥問(wèn)題。

      27、4、本發(fā)明克服了使用者在系統(tǒng)運(yùn)行過(guò)程中需要定期分文件記錄日志的問(wèn)題。

      當(dāng)前第1頁(yè)1 2 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1