版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
系統(tǒng)開發(fā)log日志使用規(guī)范目的 在系統(tǒng)開發(fā)過程中,項目經(jīng)理都非常強調(diào)編碼中l(wèi)og的重要性,并且強迫每個程序員都要求寫log。但是為啥要寫log,怎么寫log,卻很少有人去說去講,讓大家明白寫log的目的性,有利于大家理解這樣的行為。現(xiàn)在我們就來討論一下寫log是目的是什么?在代碼中嵌入log代碼信息,主要記錄下列信息:1、記錄系統(tǒng)運行異常信息2、記錄系統(tǒng)運行狀態(tài)信息3、記錄系統(tǒng)運行性能指標(biāo)通過對上述信息分析和診斷,我們能采取正確的手段來提高系統(tǒng)質(zhì)量和提升系統(tǒng)性能。Java日志組件選型針對spring容器進行日志選型:選擇slf4j+自己想用的實現(xiàn)log類(推薦采用log4j)。選選擇slf4j的理由:1、可以和多種實現(xiàn)融合,具體實現(xiàn)log類,只要替換響應(yīng)的jar,對應(yīng)用程序不要做任何修改。2、編碼簡化了,不需要判斷是否需要輸入的if-else語句,通過可變參量格式化輸出,方便書寫3、當(dāng)系統(tǒng)發(fā)布正常運行時,需要關(guān)閉log時,只要把對應(yīng)的實現(xiàn)jar刪除即可。4、解決項目中多個log組件沖突問題,通過引入一個slf4j來實現(xiàn)所有的日志組件自由切換。在系統(tǒng)開發(fā)項目總需要引入以下文件: Slf4j-api.jar Slf4j-log4j.jar Log4j.jar Lperties日志類型主要分三大類: 安全類信息:記錄系統(tǒng)邊界交互行為和信息 業(yè)務(wù)類信息:記錄系統(tǒng)內(nèi)部業(yè)務(wù)處理行為和信息 性能類信息:記錄系統(tǒng)硬件對業(yè)務(wù)處理的支撐能力日志級別一般分五級:ERROR(錯誤):此信息輸出后,主體系統(tǒng)核心模塊正常工作,需要修復(fù)才能正常工作。WARN(警告):此信息輸出后,系統(tǒng)一般模塊存在問題,不影響系統(tǒng)運行。INFO(通知):此信息輸出后,主要是記錄系統(tǒng)運行狀態(tài)等關(guān)聯(lián)信息DEBUG(調(diào)試):最細粒度的輸出,除卻上面各種情況后,你希望輸出的相關(guān)信息,都可以在這里輸出。TRACE(跟蹤):最細粒度的輸出,除卻上面各種情況后,你希望輸出的相關(guān)信息,都可以在這里輸出。(我們系統(tǒng)中不采用此級別)日志記錄準(zhǔn)則ERRORWARNINFODEBUG安全類信息合法拒絕正常其他業(yè)務(wù)類信息重要模塊異一般模塊異常正常其他性能類信息超越指標(biāo)信息正常其他日志記錄代碼規(guī)范這里的細則以標(biāo)準(zhǔn)的三層架構(gòu)來分析,包括表示層/接口層、業(yè)務(wù)層、存儲層。需要寫日志的java類請加入以下代碼:(實現(xiàn)log日志功能)importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;publicclassHelloWorld{publicstaticvoidmain(String[]args){Loggerlogger=LoggerFactory.getLogger(HelloWorld.class);("HelloWorld");}}建議使用slf4j的高版本,使用可變參量的特性。安全類信息記錄業(yè)務(wù)類信息記錄性能類信息記錄表示層/接口層類importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;publicclassLoginActionextendsBaseAction{/***員工登錄*@return*@throwsException*/publicvoidempLogin(){Loggerlogger=LoggerFactory.getLogger(LoginAction.class);……/**可以采用syslog的中產(chǎn)生的id,id是由外部用戶或者定時器調(diào)用產(chǎn)生*/longlogoID=System.currentTimeMillis();Stringuser="";Stringmethod="";("事務(wù){(diào)}用戶{}調(diào)用{}",logoID,user,method);……try{("事務(wù){(diào)}用戶{}調(diào)用{}調(diào)用登陸服務(wù)",logoID,user,method);//調(diào)用登陸服務(wù)("事務(wù){(diào)}用戶{}調(diào)用{}調(diào)用登陸服務(wù)完成",logoID,user,method);}catch(Exceptione){logger.error("事務(wù){(diào)}用戶{}調(diào)用{}調(diào)用登陸服務(wù)異常",logoID,user,method);logger.error("事務(wù)id="+logoID,e);}if(null==loginEmp){logger.warn("事務(wù){(diào)}用戶{}調(diào)用{}登陸失敗",logoID,user,method);//this.session.put("globalURL",this.request.getContextPath()+"/index.jsp");outJson("{\"success\":false}");}else{("事務(wù){(diào)}用戶{}調(diào)用{}用戶驗證通過",logoID,user,method);this.session.put("user",loginEmp);//取得登錄員工可以查看的機構(gòu)idStringids="";try{("事務(wù){(diào)}用戶{}調(diào)用{}調(diào)用權(quán)限服務(wù)",logoID,user,method);//調(diào)用權(quán)限服務(wù)("事務(wù){(diào)}用戶{}調(diào)用{}調(diào)用權(quán)限服務(wù)完成",logoID,user,method);}catch(Exceptione){logger.error("事務(wù){(diào)}用戶{}調(diào)用{}調(diào)用權(quán)限服務(wù)異常",logoID,user,method);logger.error("事務(wù)id="+logoID,e);e.printStackTrace();}//取得登錄員工的機構(gòu)上級銀行基本的IdLongorgId=0L;StringorgName="";try{("事務(wù){(diào)}用戶{}調(diào)用{}調(diào)用獲取機構(gòu)服務(wù)",logoID,user,method);//調(diào)用獲取機構(gòu)服務(wù)("事務(wù){(diào)}用戶{}調(diào)用{}調(diào)用獲取機構(gòu)服務(wù)",logoID,user,method);}catch(Exceptione){logger.error("事務(wù){(diào)}用戶{}調(diào)用{}調(diào)用獲取機構(gòu)服務(wù)異常",logoID,user,method);logger.error("事務(wù)id="+logoID,e);e.printStackTrace();}this.session.put("bankCode",orgId);this.session.put("bankName",orgName);this.session.put("indexOrgIds",ids);if(MD5.MD5To32(loginEmp.getEmpNo()).equals(loginEmp.getEmpPwd())){("事務(wù){(diào)}用戶{}調(diào)用{}密碼驗證通過",logoID,user,method);outJson("{\"success\":true,\"url\":\""+request.getContextPath()+"/jsp/main/system/updatepwd.jsp\"}");}else{("事務(wù){(diào)}用戶{}調(diào)用{}密碼錯誤",logoID,user,method);outJson("{\"success\":true,\"url\":\""+request.getContextPath()+"/jsp/main/\"}");}//returnSUCCESS;logger.debug("事務(wù){(diào)}用戶{}調(diào)用{}完成,user{},bankcode{},bankName{},indexOrgIds{}",logoID,user,method,user,orgId,orgName,ids);("事務(wù){(diào)}用戶{}調(diào)用{}完成",logoID,user,method);}}業(yè)務(wù)層類參考表示層的記錄方法存儲層類由于大量采用成熟組件,自身帶有日志,無需重復(fù)記錄附件Lperies標(biāo)準(zhǔn)模板log4j.rootLogger=info,stdout,Rlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p%d{yy-MM-ddHH:mm:ss}%c:%L-%m%nlog4j.appender.R=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.R.File=logs\\hcmm_core.loglog4j.appender.R.DatePattern='.'yyyy-MM-ddlog4j.appender.R.layout=org.apache.log4j.PatternLayout#[日志級別|時間][線程名|類名|方法名|行號]messagelog4j.appender.R.layout.ConversionPattern=[%p|%d{yyyy-MM-ddHH:mm:ss}][%t|%C|%M|%L]-%m%n#ERROR>WARN>INFO>DEBUG,級別越高,信息輸出越少。.hibernate=DEBUG.hibernate.cache=.hibernate=.hibernate.cache=.hibernate.SQL=.springframework=.wri.hy.hcmm_baseServer=infolog4j配置規(guī)則輸出等級控制:等級可分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,如果配置OFF則不打出任何信息,如果配置為INFO這樣只顯示INFO,WARN,ERROR的log信息,而DEBUG信息不會被顯示。輸出類型控制:org.apache.log4j.ConsoleAppender(控制臺),org.apache.log4j.FileAppender(文件),org.apache.log4j.DailyRollingFileAppender(每天產(chǎn)生一個日志文件),org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產(chǎn)生一個新的文件)org.apache.log4j.WriterAppender(將日志信息以流格式發(fā)送到任意指定的地方)輸出信息模式:org.apache.log4j.HTMLLayout(以HTML表格形式布局),org.apache.log4j.PatternLayout(可以靈活地指定布局模式),org.apache.log4j.SimpleLayout(包含日志信息的級別和信息字符串),org.apache.log4j.TTCCLayout(包含日志產(chǎn)生的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能制造概論-全套課件
- 2024年小型廠房租賃協(xié)議模板
- 不動產(chǎn)財產(chǎn)贈予協(xié)議2024專業(yè)
- 2024年企業(yè)員工食堂承包服務(wù)協(xié)議
- 2024年合作伙伴投資合作協(xié)議模板
- 2024商業(yè)翻譯服務(wù)協(xié)議化樣本
- 2024年統(tǒng)編版七年級上冊道德與法治期中綜合訓(xùn)練
- 2024年度團購房購買協(xié)議
- 2023-2024學(xué)年浙江省樂清市白象中學(xué)高三4月綜合測試(二模)數(shù)學(xué)試題試卷
- 2024商用場地租賃協(xié)議樣本
- 鹽酸-危險化學(xué)品安全標(biāo)簽
- 二年級下冊語文試題 -“詩詞大會”題庫二 (word版有答案) 人教部編版
- 部編版道德與法治三年級上冊知識點
- SB/T 10843-2012金屬組合貨架
- GB/T 4337-2015金屬材料疲勞試驗旋轉(zhuǎn)彎曲方法
- GB/T 40120-2021農(nóng)業(yè)灌溉設(shè)備灌溉用熱塑性可折疊軟管技術(shù)規(guī)范和試驗方法
- 各專業(yè)試驗報告-nvh m301s1樣車測試報告
- 化工課件-S-Zorb裝置運行特點及故障處理
- 頭發(fā)及頭皮知識講述資料課件
- 兒童年齡分期及各期特點 (兒童護理課件)
- 新版GMP基礎(chǔ)知識培訓(xùn)課件
評論
0/150
提交評論