專利名稱:日志數據寫入方法和日志系統的制作方法
技術領域:
本發明涉及數據庫和計算機領域,更具體的說,是涉及一種日志數據寫入方法和日志系統。
背景技術:
在計算機中日志是軟件的必要組成部分,其主要用于保存計算機中的信息和數據。在日常的計算機應用中,只要產生一條日志數據,即刻寫入磁盤存檔,通常情況下,采用該種方式已經可以滿足計算機應用的需要了。但是,在日志數據的高并發情況下,采用現有技術的方法當產生一條日志數據時, 即刻寫入磁盤存檔,這樣必然會導致頻繁的磁盤1/0(輸入輸出)操作,不僅浪費太多的時間,而且還增加了系統的功耗。因此,為了做到快速的響應,在日志數據寫入磁盤存到時減少時間的浪費和系統的功耗,就必須提供一種新的日志數據寫入方法。
發明內容
有鑒于此,本發明提供了一種日志數據寫入方法和日志系統,以克服現有技術中由于日志數據寫入時頻繁的磁盤I/o操作,造成時間上的浪費和增加系統功耗的問題。為實現上述目的,本發明提供如下技術方案一種日志數據寫入方法,包括獲取產生的日志數據將其寫入內存;當所述內存中的日志數據達到預置數量時,將存儲于所述內存中的所有所述日志數據寫入磁盤。優選地,獲取產生的日志數據將其寫入內存之后,所有所述日志數據寫入磁盤之前,還包括當達到進行磁盤寫入的預設時間時,所述內存中存儲的所述日志數據存在,將所有所述日志數據寫入磁盤。優選地,包括當達到進行磁盤寫入的預設時間時,所述內存中存儲的所述日志數據不存在,初始化所述預設時間。優選地,所述預置數量為日志數據的條數。優選地,所述預置數量為日志數據的存儲量。優選地,所述預設時間采用定時器進行定時。—種日志系統,包括第一寫入單元,用于獲取產生的日志數據將其寫入內存;第一判斷單元,用于判斷所述內存中的日志數據是否達到預置數量;第二寫入單元,用于當所述內存中的日志數據達到預置數量時,將存儲于所述內存中的所有日志數據寫入磁盤。優選地,還包括第二判斷單元,用于在日志數據寫入內存之后,所有日志數據寫入磁盤之前,判斷是否達到進行磁盤寫入的預設時間;第三判斷單元,用于當到達進行磁盤寫入的預設時間時,判斷內存中存儲的日志數據是否存在,如果存在,則進入第二寫入單元;如果不存在,則進入定時單元;定時單元,用于對預設時間進行初始化和定時。經由上述的技術方案可知,與現有技術相比,本發明公開了一種日志數據寫入方法和日志系統,通過將日志數據存儲于內存中,在滿足預設條件下,將 日志數據通過批量的方式寫入至磁盤中存檔,能夠減少現有技術中一旦生成日志數據即刻寫入磁盤的操作,減少磁盤I/o操作,即減少了在日志數據高并發應用情況下,減少日志數據寫入磁盤存檔的次數,進而減少日志寫入磁盤的時間,同時,降低系統在進行磁盤寫入時的功耗,最終達到快速響應的目的。
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據提供的附圖獲得其他的附圖。圖I為本發明實施例一公開的一種日志數據寫入方法的流程圖;圖2為本發明實施例二公開的一種日志數據寫入方法的流程圖;圖3為本發明實施例三公開的一種日志系統的結構示意圖;圖4為本發明實施例四公開的一種日志系統的結構示意圖。
具體實施例方式為使本發明的上述目的、特征和優點能夠更加明顯易懂,下面結合附圖對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。經由背景技術可知,采用現有技術時,一旦生成日志數據,即刻將其寫入磁盤中進行存檔,導致頻繁的磁盤I/o操作,不僅浪費了大量時間,在頻繁操作的過程中還增加了系統的功耗。因此,本發明實施例公開了一種新的日志數據寫入方法,減少日志數據寫入磁盤進行存檔時所進行的頻繁操作,進一步減少操作時所耗費的時間和系統的功耗。具體過程通過以下實施例進行詳細說明。實施例一請參閱附圖1,為本發明實施例公開的一種日志數據寫入方法的流程圖,主要包括以下步驟步驟S101,獲取產生的日志數據,并將該日志數據寫入內存中。步驟S102,判斷內存中所存儲的日志數據是否已達到預置數量,如果是,則執行步驟S103 ;如果否,則結束。步驟S103,將存儲于內存中的所有的日志數據寫入磁盤中進行存檔。在執行上述步驟SlOl至步驟S103時,首先,將計算機中生成的日志數據持續保存于內存中;然后,判斷內存中所存儲的日志數據是否已經達到預置數據,如果是,則將存儲與內存中的所有日志數據采用批量的方式寫入至磁盤中。本發明實施例采用上述的方式是基于寫數據時,寫入內存的速度比寫入磁盤的速度快(大約為1000倍以上)的特點,一旦生成日志數據,則將其寫入內存中,并在日志數據在內存中達到一定的量時,即預置數量時,將其批量寫入至磁盤中存檔。其中,在本發明所公開的實施例中,內存中的預置數量可以根據具體的應用場景進行預先的設置。并且,該預置數量可以指存儲于內存中的日志數據的記錄條數,如存儲20條或30條,也可以是指存儲于內存中的日志數據的存儲量,如存儲了 4K或8K的日志。一般情況下,采用預置內存中的日志數據的記錄條數的方式,判斷內存中所存儲的日志數據量。 通過上述本發明實施例公開的日志數據寫入方法,能夠減少現有技術中一旦生成日志數據即刻寫入磁盤的操作,減少磁盤I/o操作,即減少了在日志數據高并發應用情況下,減少日志數據寫入磁盤存檔的次數,進而減少日志寫入磁盤的時間,同時,降低系統在進行磁盤寫入時的功耗,最終達到快速響應的目的。實施例二在上述本發明實施例一提出的日志數據寫入方法的基礎上,本發明還公開了一種日志數據寫入方法,具體流程圖請參閱附圖2,主要包括以下步驟步驟S201,獲取產生的日志數據,并將該日志數據寫入內存中。步驟S202,等待事件,判斷是否達到進行磁盤寫入的預設時間,如果是,則執行步驟S203,如果否,則繼續等待事件。步驟S203,判斷內存中是否存在日志數據,如果是,則執行步驟S205,如果否,則返回步驟S202繼續等待事件。步驟S204,判斷內存中所存儲的日志數據是否已達到預置數量,如果是,則執行步驟S205 ;如果否,則結束。步驟S205,將存儲于內存中的所有的日志數據寫入磁盤中進行存檔。在執行上述步驟S201至步驟S205中,步驟S202中的等待事件是操作系統內核對象,為等待超時發生這一事件,即判斷當前的操作是否達到預設時間,當達到預設時間后再執行步驟S203,判斷內存中是否存儲有日志數據,如果有則將所存儲的日志數據采用批量的方式寫入磁盤中存檔。需要說明的是,在執行步驟S202時,由于,其等待事件為操作系統的內核對象,所以,其在執行等待這一操作時不占用CPU資源。由于,步驟S202和步驟S204實際上可以看作是并列存在的,因此,在執行步驟S202的同時,執行步驟S204,依據預置數量這一條件對內存中的日志數據進行判斷,如果內存中的日志數據量滿足預置數量這一條件,則將當前內存中的日志數據寫入至磁盤中進行存檔。由上述可知,當執行步驟S202等待事件時,如果預設時間未到達,而內存中的日志數據已滿足預置數量這一寫入條件,則先執行當前內存中的日志數據的寫入,然后再等待事件發生后再判斷內存中是否存儲有日志數據;如果預設時間在內存中的日志數據滿足預置數量之前達到,則執行步驟S203,判斷內存中是否存在日志數據,并在存在時,將日志數據寫入至磁盤中進行存檔。本發明實施例在采用上述的方式寫入時,也是基于寫入內存的速度比寫入磁盤的速度快(大約為1000倍以上)的特點,一旦生成日志數據,則將其寫入內存中,并在日志數據在內存中達到一定的量時,即預置數量時,將其批量寫入至磁盤中存檔。其中,在本發明所公開的實施例中,內存中的預置數量也可以采用實施例一中的方式進行預先的設置。而在滿足執行步驟S202、步驟S203和步驟S205時可采用線程的方式實現。此外,在等待事件發生時,可采用定時器的方式實現。通過上述本發明實施例公開的日志數據寫入方法,能夠減少現有技術中一旦生成日志數據即刻寫入磁盤的操作,減少磁盤I/o操作,即減少了在日志數據高并發應用情況下,減少日志數據寫入磁盤存檔的次數,進而減少日志寫入磁盤的時間,同時,降低系統在進行磁盤寫入時的功耗,最終達到快速響應的目的。
上述本發明公開的實施例中詳細描述了一種日志數據寫入方法,對于本發明實施例所公開的方法可采用多種形式的系統實現,因此本發明還公開了一種日志系統,下面給出具體的實施例進行詳細說明。實施例三請參閱附圖3為本發明實施例公開的一種日志系統的結構示意圖,其特征在于,包括第一寫入單元301、第一判斷單元302和第二寫入單元303。第一寫入單元301,用于獲取產生的日志數據,并將該日志數據寫入內存。第一判斷單元302,用于判斷內存中所存儲的日志數據是否達到預置數量。第二寫入單元303,用于當所述內存中的日志數據達到預置數量時,將存儲于所述內存中的所有日志數據寫入磁盤。上述本發明實施例公開的日志系統,其各個單元在執行日志寫入的過程中與實施例一中公開的方法一一對應,因此,這里不再進行贅述。實施例四在上述本發明實施例三的基礎上,本發明還公開了一種日志系統,請參閱附圖4為該日志系統的結構示意圖,主要包括第一寫入單元401、第二判斷單元402、第三判斷單元403、定時單元404、第一判斷單元405和第二寫入單元406。第一寫入單元401,用于獲取產生的日志數據,并將該日志數據寫入內存。第二判斷單元402,用于在日志數據寫入內存之后,所有日志數據寫入磁盤之前,判斷是否達到進行磁盤寫入的預設時間。第三判斷單元403,用于當到達進行磁盤寫入的預設時間時,判斷內存中存儲的日志數據是否存在,如果存在,則進入第二寫入單元406 ;如果不存在,則進入定時單元404。定時單元404,用于對預設時間進行初始化和定時。第一判斷單元405,用于判斷內存中所存儲的日志數據是否達到預置數量。第二寫入單元406,用于當內存中所存儲的日志數據達到預置數量時,將存儲于內存中的所有日志數據寫入磁盤進行存檔。基于上述公開的日志系統,在進行日志寫入磁盤進行存檔時,第一判斷單元405與第二判斷單元402實際上是并行存在的,即兩者同時存在,當第一判斷單元405不滿足條件,且第二判斷單元402滿足時,則執行與第二判斷單元402相關的日志數據寫入;如果第一判斷單元405滿足條件,且第二判斷單元402不滿足條件時,則執行與第一判斷單元405相關的日志數據寫入。即在進行判斷的過程中,由于第一判斷單元405和第二判斷單元402的判斷條件不一致,因此,先執行滿足條件的判斷單元對應的相關的日志數據寫入操作。綜上所述通過上述本發明實施例公開的日志數據寫入方法和日志系統,能夠減少現有技術中一旦生成日志數據即刻寫入磁盤的操作,減少磁盤I/o操作,即減少了在日志數據高并發應用情況下,減少日志數據寫入磁盤存檔的次數,進而減少日志寫入磁盤的時間,同時,降低系統在進行磁盤寫入時的功耗,最終達到快速響應的目的。本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。·結合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執行的軟件模塊,或者二者的結合來實施。軟件模塊可以置于隨機存儲器(RAM)、內存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術領域內所公知的任意其它形式的存儲介質中。對所公開的實施例的上述說明,使本領域專業技術人員能夠實現或使用本發明。對這些實施例的多種修改對本領域的專業技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發明的精神或范圍的情況下,在其它實施例中實現。因此,本發明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
權利要求
1.一種日志數據寫入方法,其特征在于,包括 獲取產生的日志數據將其寫入內存; 當所述內存中的日志數據達到預置數量時,將存儲于所述內存中的所有所述日志數據寫入磁盤。
2.根據權利要求I所述的方法,其特征在于,獲取產生的日志數據將其寫入內存之后,所有所述日志數據寫入磁盤之前,還包括 當達到進行磁盤寫入的預設時間時,所述內存中存儲的所述日志數據存在,將所有所述日志數據寫入磁盤。
3.根據權利要求2所述的方法,其特征在于,包括 當達到進行磁盤寫入的預設時間時,所述內存中存儲的所述日志數據不存在,初始化所述預設時間。
4.根據權利要求I所述的方法,其特征在于,所述預置數量為日志數據的條數。
5.根據權利要求I所述的方法,其特征在于,所述預置數量為日志數據的存儲量。
6.根據權利要求2所述的方法,其特征在于,所述預設時間采用定時器進行定時。
7.一種日志系統,其特征在于,包括 第一寫入單元,用于獲取產生的日志數據將其寫入內存; 第一判斷單元,用于判斷所述內存中的日志數據是否達到預置數量; 第二寫入單元,用于當所述內存中的日志數據達到預置數量時,將存儲于所述內存中的所有日志數據寫入磁盤。
8.根據權利要求7所述的系統,其特征在于,還包括 第二判斷單元,用于在日志數據寫入內存之后,所有日志數據寫入磁盤之前,判斷是否達到進行磁盤寫入的預設時間; 第三判斷單元,用于當到達進行磁盤寫入的預設時間時,判斷內存中存儲的日志數據是否存在,如果存在,則進入第二寫入單元;如果不存在,則進入定時單元; 定時單元,用于對預設時間進行初始化和定時。
全文摘要
本發明公開了一種日志寫入方法和日志系統,該方法為獲取產生的日志數據將其寫入內存;當內存中的日志數據達到預置數量時,將存儲于內存中的所有所述日志數據寫入磁盤。或者在獲取產生的日志數據將其寫入內存之后,所有日志數據寫入磁盤之前,當達到進行磁盤寫入的預設時間時,內存中存儲的所述日志數據存在,將所有日志數據寫入磁盤。通過上述本發明實施例公開的日志數據寫入方法和日志系統,能夠減少現有技術中一旦生成日志數據即刻寫入磁盤的操作,減少磁盤I/O操作,即減少了在日志數據高并發應用情況下,減少日志數據寫入磁盤存檔的次數,進而減少日志寫入磁盤的時間,同時,降低系統在進行磁盤寫入時的功耗,最終達到快速響應的目的。
文檔編號G06F3/06GK102810050SQ20111014410
公開日2012年12月5日 申請日期2011年5月31日 優先權日2011年5月31日
發明者謝鴻鋒 申請人:深圳市金蝶友商電子商務服務有限公司