[發(fā)明專利]一種檢測未判斷日志輸出級別而直接輸出日志的方法有效
| 申請?zhí)枺?/td> | 201110362084.X | 申請日: | 2011-11-16 |
| 公開(公告)號: | CN102508778A | 公開(公告)日: | 2012-06-20 |
| 發(fā)明(設(shè)計)人: | 夏雪;闞寶麗 | 申請(專利權(quán))人: | 山東浪潮齊魯軟件產(chǎn)業(yè)股份有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 250001 山東*** | 國省代碼: | 山東;37 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 檢測 判斷 日志 輸出 級別 直接 方法 | ||
1.一種檢測未判斷日志輸出級別而直接輸出日志的方法,其特征在于包括以下步驟:
A、分析JAVA代碼的類文件,遍歷所有的命令代碼,找出使用了Log4j日志輸出級別判斷的命令;
B、分析JAVA代碼的類文件,遍歷所有的命令代碼,找出使用了Log4j框架輸出日志功能的命令,并判斷在調(diào)用前是否已經(jīng)判斷了日志輸出級別。
2.根據(jù)權(quán)利要求1所述的檢測未判斷日志輸出級別而直接輸出日志的方法,其特征在于包括以下步驟:
A、分析JAVA代碼的類文件,遍歷所有的命令代碼,找出使用了Log4j日志輸出級別判斷的命令:
打開JAVA代碼的類文件,逐條命令進行解析,找出Log4j日志輸出級別判斷的判定語句的語句塊范圍,
a1、若命令的操作碼為IFEQ,說明該命令是一個判定語句,取得該命令的范圍,該范圍標(biāo)明了判定語句開始執(zhí)行的位置和結(jié)束的位置;
a2、若命令的操作碼為INVOKEVIRTUAL,且執(zhí)行的方法名為isDebugEnabled或isInfoEnabled或isEnabledFor,說明該命令調(diào)用了Log4j的日志輸出級別判斷的功能,取得該命令所處的位置,判斷該命令是否處于判定語句塊內(nèi),如果判斷日志輸出級別的語句處于判定語句塊中,就記錄下判定語句塊的開始位置和結(jié)束位置;
a3、重復(fù)a1和a2的過程,將該類文件中所有已經(jīng)調(diào)用了Log4j的日志輸出級別判斷的功能的判定語句塊找出并記錄語句塊的開始位置和結(jié)束位置;
B、分析JAVA代碼的類文件,遍歷所有的命令代碼,找出使用了Log4j框架輸出日志功能的命令,并判斷在調(diào)用前是否已經(jīng)判斷了日志輸出級別:
打開JAVA代碼的類文件,逐條命令進行解析,若符合以下所有條件,判定該命令使用了Log4j輸出日志的功能:
該命令的操作碼為INVOKEVIRTUAL;
操作類的類名為org.apache.Log4j.Logger;
執(zhí)行的方法名為debug或info或error或fatal或warn;
如果判定結(jié)果為該命令使用了Log4j輸出日志的功能,且該命令的位置大于A中記錄的判定語句塊的開始位置小于結(jié)束位置,則可認為它位于判定語句塊內(nèi),可判定該處的日志輸出已經(jīng)提前進行了日志級別是否允許輸出的判定,否則,可判定此處存在使用Log4j框架時未判斷日志輸出級別而直接輸出日志的錯誤用法。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于山東浪潮齊魯軟件產(chǎn)業(yè)股份有限公司,未經(jīng)山東浪潮齊魯軟件產(chǎn)業(yè)股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110362084.X/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





