本技術涉及計算機,尤其涉及一種日志記錄方法、裝置、存儲介質(zhì)及電子設備。
背景技術:
1、目前,為了記錄用戶在系統(tǒng)中的操作,采用在基本的業(yè)務代碼的處理邏輯中添加對用戶的具體操作進行記錄的方式進行日志記錄,以便運維人員根據(jù)日志對系統(tǒng)進行維護。但是,將日志記錄代碼添加在業(yè)務代碼中,會提高業(yè)務代碼的復雜度,造成業(yè)務代碼冗余,使得業(yè)務代碼的可讀性降低。因此,如何實現(xiàn)業(yè)務代碼和日志代碼的分離是目前亟需解決的問題。
技術實現(xiàn)思路
1、鑒于上述問題,本技術提供一種日志記錄方法、裝置、存儲介質(zhì)及電子設備,解決了如何實現(xiàn)業(yè)務代碼和日志代碼的分離的問題。
2、為解決上述技術問題,本技術提出以下方案:
3、第一方面,本技術提供了一種日志記錄方法,方法包括:根據(jù)自定義注解獲取第一日志內(nèi)容,自定義注解采用面向切面編程的方式預先織入至業(yè)務代碼中;根據(jù)接口的自定義實現(xiàn)類獲取第二日志內(nèi)容,接口采用面向切面編程的方式預先織入至業(yè)務代碼中;將第一日志內(nèi)容和第二日志內(nèi)容存儲至數(shù)據(jù)庫。
4、在業(yè)務開發(fā)中可以無需考慮日志相關的內(nèi)容,只需要在開發(fā)完成后在接口位置加上注解即可,完全實現(xiàn)日志與業(yè)務程序的分離。針對眾多需要添加日志相關功能的后端接口中只需要這一套處理邏輯即可。針對較為復雜的業(yè)務操作,也可以對預留的接口進行自定義實現(xiàn),此操作則是將不同模塊的日志處理進行了分離,也方便了后續(xù)程序的維護操作。
5、結合第一方面,在一種可能的實現(xiàn)方式中,解析自定義注解得到注解參數(shù)和業(yè)務參數(shù),注解參數(shù)用于指示待操作業(yè)務的屬性信息,業(yè)務參數(shù)用于指示待操作業(yè)務的基本信息;解析注解參數(shù)和業(yè)務參數(shù)信息得到spel表達式;在內(nèi)置的數(shù)據(jù)庫中查詢數(shù)據(jù),將數(shù)據(jù)填充至spel表達式,得到第一日志內(nèi)容。
6、根據(jù)spel表達式構造日志內(nèi)容可以用于一些簡單的業(yè)務操作。例如刪除操作、新增操作、查詢操作等。
7、結合第一方面,在另一種可能的實現(xiàn)方式中,解析自定義注解,得到自定義實現(xiàn)類,通過反射將自定義實現(xiàn)類實例化;執(zhí)行前置處理,得到第一數(shù)據(jù),第一數(shù)據(jù)用于指示執(zhí)行業(yè)務代碼之前產(chǎn)生的數(shù)據(jù);執(zhí)行后置處理,得到第二數(shù)據(jù),第二數(shù)據(jù)用于指示執(zhí)行業(yè)務代碼之后產(chǎn)生的數(shù)據(jù);根據(jù)第一數(shù)據(jù)和第二數(shù)據(jù)構造第二日志內(nèi)容。
8、由于具體的實現(xiàn)對象以參數(shù)的方式添加在注解中,類制定了對象數(shù)據(jù)、表示、所能完成的操作,因此解析注解可以得到接口自定義實現(xiàn)的類,即對象參數(shù),通過實例化接口自定義實現(xiàn)的類來創(chuàng)建對象,此對象被稱為該類的實例。對該對象執(zhí)行前置處理和后置處理,并比較執(zhí)行業(yè)務代碼之前產(chǎn)生的第一數(shù)據(jù)和執(zhí)行業(yè)務代碼之后產(chǎn)生的第二數(shù)據(jù),進而生成復雜操作的日志內(nèi)容。
9、結合第一方面,在另一種可能的實現(xiàn)方式中,按照預設格式拼接第一日志內(nèi)容和第二日志內(nèi)容,將拼接后的日志內(nèi)容添加至日志對象中,并填充日志對象的其他屬性;通過異步的方式將日志對象存儲至數(shù)據(jù)庫。
10、對于異步日志來說,每次有日志消息產(chǎn)生的時候,只需要一個存儲的行為即可,存儲結束就可以繼續(xù)執(zhí)行后面的業(yè)務代碼了,而真正寫入到磁盤的操作,是由后臺線程進行的,這樣做的好處就是:前臺線程不會阻塞在寫日志上,后臺線程真正寫出日志時,日志消息往往已經(jīng)積累了很多,此時只需要調(diào)用一次io函數(shù),而不需要每條消息都調(diào)用一個io函數(shù),如此也提高了效率。
11、第二方面,本技術提供了一種日志記錄裝置,日志記錄裝置包括:
12、獲取模塊,用于根據(jù)自定義注解獲取第一日志內(nèi)容,自定義注解采用面向切面編程的方式預先織入至業(yè)務代碼中;根據(jù)接口的自定義實現(xiàn)類獲取第二日志內(nèi)容,接口采用面向切面編程的方式預先織入至業(yè)務代碼中。
13、存儲模塊,用于將第一日志內(nèi)容和第二日志內(nèi)容存儲至數(shù)據(jù)庫。
14、在業(yè)務開發(fā)中可以無需考慮日志相關的內(nèi)容,只需要在開發(fā)完成后在接口位置加上注解即可,完全實現(xiàn)日志與業(yè)務程序的分離。針對眾多需要添加日志相關功能的后端接口中只需要這一套處理邏輯即可。針對較為復雜的業(yè)務操作,也可以對預留的接口進行自定義實現(xiàn),此操作則是將不同模塊的日志處理進行了分離,也方便了后續(xù)程序的維護操作。
15、結合第二方面,在一種可能的實現(xiàn)方式中,獲取模塊具體用于:解析自定義注解得到注解參數(shù)和業(yè)務參數(shù),注解參數(shù)用于指示待操作業(yè)務的屬性信息,業(yè)務參數(shù)用于指示待操作業(yè)務的基本信息;解析注解參數(shù)和業(yè)務參數(shù)信息得到spel表達式;在內(nèi)置的數(shù)據(jù)庫中查詢數(shù)據(jù),將數(shù)據(jù)填充至spel表達式,得到第一日志內(nèi)容。
16、根據(jù)spel表達式構造日志內(nèi)容可以用于一些簡單的業(yè)務操作。例如刪除操作、新增操作、查詢操作等。
17、結合第二方面,在另一種可能的實現(xiàn)方式中,獲取模塊具體用于:解析自定義注解,得到自定義實現(xiàn)類,通過反射將自定義實現(xiàn)類實例化;執(zhí)行前置處理,得到第一數(shù)據(jù),第一數(shù)據(jù)用于指示執(zhí)行業(yè)務代碼之前產(chǎn)生的數(shù)據(jù);執(zhí)行后置處理,得到第二數(shù)據(jù),第二數(shù)據(jù)用于指示執(zhí)行業(yè)務代碼之后產(chǎn)生的數(shù)據(jù);根據(jù)第一數(shù)據(jù)和第二數(shù)據(jù)構造第二日志內(nèi)容。
18、由于具體的實現(xiàn)對象以參數(shù)的方式添加在注解中,類制定了對象數(shù)據(jù)、表示、所能完成的操作,因此解析注解可以得到接口自定義實現(xiàn)的類,即對象參數(shù),通過實例化接口自定義實現(xiàn)的類來創(chuàng)建對象,此對象被稱為該類的實例。對該對象執(zhí)行前置處理和后置處理,并比較執(zhí)行業(yè)務代碼之前產(chǎn)生的第一數(shù)據(jù)和執(zhí)行業(yè)務代碼之后產(chǎn)生的第二數(shù)據(jù),進而生成復雜操作的日志內(nèi)容。
19、結合第二方面,在另一種可能的實現(xiàn)方式中,存儲模塊具體用于:按照預設格式拼接第一日志內(nèi)容和第二日志內(nèi)容,將拼接后的日志內(nèi)容添加至日志對象中,并填充日志對象的其他屬性;通過異步的方式將日志對象存儲至數(shù)據(jù)庫。
20、對于異步日志來說,每次有日志消息產(chǎn)生的時候,只需要一個存儲的行為即可,存儲結束就可以繼續(xù)執(zhí)行后面的業(yè)務代碼了,而真正寫入到磁盤的操作,是由后臺線程進行的,這樣做的好處就是:前臺線程不會阻塞在寫日志上,后臺線程真正寫出日志時,日志消息往往已經(jīng)積累了很多,此時只需要調(diào)用一次io函數(shù),而不需要每條消息都調(diào)用一個io函數(shù),如此也提高了效率。
21、為了實現(xiàn)上述目的,根據(jù)本技術的第三方面,提供了一種存儲介質(zhì),所述存儲介質(zhì)包括存儲的程序,其中,在所述程序運行時控制所述存儲介質(zhì)所在設備執(zhí)行上述第一方面的日志記錄方法。
22、為了實現(xiàn)上述目的,根據(jù)本技術的第四方面,提供了一種電子設備,所述設備包括至少一個處理器、以及與處理器連接的至少一個存儲器、總線;其中,處理器、存儲器通過總線完成相互間的通信;處理器用于調(diào)用存儲器中的程序指令,以執(zhí)行上述第一方面的日志記錄方法。
23、借由上述技術方案,本技術提供的技術方案至少具有下列優(yōu)點:
24、本技術提供的一種日志記錄方法、裝置、存儲介質(zhì)及電子設備,本技術可以在業(yè)務開發(fā)中可以無需考慮日志相關的內(nèi)容,只需要在開發(fā)完成后在接口位置加上注解即可,完全實現(xiàn)日志與業(yè)務程序的分離。針對眾多需要添加日志相關功能的后端接口中只需要這一套處理邏輯即可。針對較為復雜的業(yè)務操作,也可以對預留的接口進行自定義實現(xiàn),此操作則是將不同模塊的日志處理進行了分離,也方便了后續(xù)程序的維護操作。
25、上述說明僅是本技術技術方案的概述,為了能夠更清楚了解本技術的技術手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本技術的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本技術的具體實施方式。