国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

日志打印最佳實(shí)踐

這篇具有很好參考價值的文章主要介紹了日志打印最佳實(shí)踐。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

日志打印最佳實(shí)踐

標(biāo)題為什么要記錄日志?

打印調(diào)試:用日志來記錄變量或者某一段邏輯,記錄程序運(yùn)行的流程,即程序運(yùn)行了哪些代碼,方便排查邏輯問題。

問題定位:程序出異?;蛘叱龉收蠒r快速的定位問題,方便后期解決問題。因?yàn)榫€上生產(chǎn)環(huán)境無法debug,在測試環(huán)境去模擬一套生產(chǎn)環(huán)境費(fèi)時費(fèi)力。所以依靠日志記錄的信息定位問題,這點(diǎn)非常重要。

監(jiān)控告警 & 用戶行為審計(jì):格式化后日志可以通過相關(guān)監(jiān)控系統(tǒng)(AntMonitor)配置多維度的監(jiān)控視圖,讓我們可以掌握系統(tǒng)運(yùn)行情況或者記錄用戶的操作行為并對日志采集分析,用于建設(shè)業(yè)務(wù)大盤使用

什么時候記錄日志?

代碼初始化時或進(jìn)入邏輯入口時 :系統(tǒng)或者服務(wù)的啟動參數(shù)。核心模塊或者組件初始化過程中往往依賴一些關(guān)鍵配置,根據(jù)參數(shù)不同會提供不一樣的服務(wù)。務(wù)必在這里記錄INFO日志,打印出參數(shù)以及啟動完成態(tài)服務(wù)表述。

編程語言提示異常:這類捕獲的異常是系統(tǒng)告知開發(fā)人員需要加以關(guān)注的,是質(zhì)量非常高的報錯。應(yīng)當(dāng)適當(dāng)記錄日志,根據(jù)實(shí)際結(jié)合業(yè)務(wù)的情況使用WARN或者ERROR級別。

業(yè)務(wù)流程預(yù)期不符:項(xiàng)目代碼中結(jié)果與期望不符時也是日志場景之一,簡單來說所有流程分支都可以加入考慮。取決于開發(fā)人員判斷能否容忍情形發(fā)生。常見的合適場景包括外部參數(shù)不正確,數(shù)據(jù)處理問題導(dǎo)致返回碼不在合理范圍內(nèi)等等。

系統(tǒng)/業(yè)務(wù)核心邏輯的關(guān)鍵動作:系統(tǒng)中核心角色觸發(fā)的業(yè)務(wù)動作是需要多加關(guān)注的,是衡量系統(tǒng)正常運(yùn)行的重要指標(biāo),建議記錄INFO級別日志。

第三方服務(wù)遠(yuǎn)程調(diào)用:微服務(wù)架構(gòu)體系中有一個重要的點(diǎn)就是第三方永遠(yuǎn)不可信,對于第三方服務(wù)遠(yuǎn)程調(diào)用建議打印請求和響應(yīng)的參數(shù),方便在和各個終端定位問題,不會因?yàn)榈谌椒?wù)日志的缺失變得手足無措。

日志格式一般需包含以下幾類關(guān)鍵信息:


調(diào)用時間
日志鏈路id(traceId、rpcId)
線程名
接口名
方法名
調(diào)用耗時
調(diào)用是否成功(Y/N)
錯誤碼
系統(tǒng)上下文信息(調(diào)用系統(tǒng)名、調(diào)用系統(tǒng)ip、調(diào)用時間戳、是否壓測(Y/N))

2022-12-12 06:05:05,129 [0b26053315407142451016402xxxxx 0.3 - /// - ] INFO [SofaBizProcessor-4-thread-333] - [(interfaceName,methodName,1ms,Y,SUCCESS)(appName,ip地址,時間戳,Y)


詳細(xì)日志

詳細(xì)日志是用于補(bǔ)充摘要日志中的一些業(yè)務(wù)參數(shù)的日志文件,用于問題排查。詳細(xì)日志一般包含以下幾類信息:

調(diào)用時間
日志鏈路id(traceId、rpcId)
線程名
接口名
方法名
調(diào)用耗時
調(diào)用是否成功(Y/N)
系統(tǒng)上下文信息(調(diào)用系統(tǒng)名、調(diào)用系統(tǒng)ip、調(diào)用時間戳、是否壓測(Y/N))
請求入?yún)?請求出參

2022-12-12 06:05:05,129 [0b26053315407142451016402xxxxx 0.3 - /// - ] INFO [SofaBizProcessor-4-thread-333] - [(interfaceName,methodName,1ms,Y,SUCCESS)(appName,ip地址,時間戳,Y)(參數(shù)1,參數(shù)2)(xxxx)

日志記錄原則

隔離性:日志輸出不能影響系統(tǒng)正常運(yùn)行;

安全性:日志打印本身不能存在邏輯異?;蚵┒?,導(dǎo)致產(chǎn)生安全問題;

數(shù)據(jù)安全:不允許輸出機(jī)密、敏感信息,如用戶聯(lián)系方式、身份證號碼、token等;

可監(jiān)控分析:日志可以提供給監(jiān)控進(jìn)行監(jiān)控,分析系統(tǒng)進(jìn)行分析;

可定位排查:日志信息輸出需有意義,需具有可讀性,可供日常開發(fā)同學(xué)排查線上問題。

打印日志要點(diǎn)

1.防止NPE

2.禁止使用 System.out.println()輸出日志
原因: 此打印日志為控制臺日志 , 并且是同步方法,高并發(fā)情況會影響性能 , 而且無法對日志統(tǒng)一收集

3.應(yīng)用中不可直接使用日志系統(tǒng)(Log4j、Logback)中的API,而應(yīng)依賴使用日志框架 (SLF4J、JCL–Jakarta Commons Logging)中的API。
原因: 日志系統(tǒng)需要與代碼解耦

4.聲明日志工具對象Logger應(yīng)聲明為private static final
原因: private 防止日志對象被其它類非法使用
static 防止重復(fù)new日志對象,防止被序列化 , 減少安全風(fēng)險
final 在類的生命周期無需變更logger,避免程序運(yùn)行期對logger進(jìn)行修改。

5.捕獲異常后不要使用e.printStackTrace()打印日志
原因: e.printStackTrace()語句產(chǎn)生的字符串記錄的是堆棧信息,如果信息太長太多,字符串常量池所在的內(nèi)存塊沒有空間了,即內(nèi)存滿了,系統(tǒng)請求將被阻塞。

6.不要打印無意義(無業(yè)務(wù)上下文、無關(guān)聯(lián)日志鏈路id)的日志

7.日志打印禁止使用JSON打印對象 , 應(yīng)使用 toString() 方法或者apache的ToStringBulider

8.禁止打印敏感信息

9.日志打印盡量使用英文
原因: 盡量在打印日志時輸出英文,防止中文編碼與終端不一致導(dǎo)致打印出現(xiàn)亂碼的情況,對故障定位和排查存在一定的干擾。

10.調(diào)用第三方接口一定需要打印出入?yún)?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-435424.html

到了這里,關(guān)于日志打印最佳實(shí)踐的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 2023年19款最佳3D打印軟件

    2023年19款最佳3D打印軟件

    推薦:使用 NSDT場景編輯器 快速搭建3D應(yīng)用場景 雖然我們包括一系列非常不同的3D打印軟件,旨在滿足非常不同的需求,但有一些關(guān)鍵方面可以決定3D打印機(jī)軟件的成敗。 廣泛的 工具:我們選擇了具有多功能工具集的3D打印軟件。 團(tuán)隊(duì)友好 :理想情況下,最好的工具可以讓您

    2024年02月09日
    瀏覽(33)
  • 43 最佳實(shí)踐-性能最佳實(shí)踐-IOThread配置

    43 最佳實(shí)踐-性能最佳實(shí)踐-IOThread配置

    43.1 概述 KVM平臺上,對虛擬磁盤的讀寫在后端默認(rèn)由QEMU主線程負(fù)責(zé)處理。這樣會造成如下問題: 虛擬機(jī)的I/O請求都由一個QEMU主線程進(jìn)行處理,因此單線程的CPU利用率成為虛擬機(jī)I/O性能的瓶頸。 虛擬機(jī)I/O在QEMU主線程處理時會持有QEMU全局鎖(qemu_global_mutex),一旦I/O處理耗時較長

    2024年02月08日
    瀏覽(24)
  • 50 最佳實(shí)踐-安全最佳實(shí)踐-Libvirt鑒權(quán)

    50 最佳實(shí)踐-安全最佳實(shí)踐-Libvirt鑒權(quán)

    50 最佳實(shí)踐-安全最佳實(shí)踐-Libvirt鑒權(quán) 50.1 簡介 用戶使用libvirt遠(yuǎn)程調(diào)用功能時,如果不進(jìn)行任何鑒權(quán)校驗(yàn),所有連接到主機(jī)所在網(wǎng)絡(luò)的第三方程序都可以通過libvirt的遠(yuǎn)程調(diào)用操作虛擬機(jī),存在安全隱患。為了提升系統(tǒng)安全性,openEuler提供了libvirt鑒權(quán)功能,即用戶通過libvirt遠(yuǎn)

    2024年02月09日
    瀏覽(25)
  • springboot打印sql日志

    springboot打印sql日志

    相信大家在項(xiàng)目調(diào)試的時候都遇到過最后數(shù)據(jù)庫查詢、或者插入的數(shù)據(jù)與自己所想的不符,但是又不知道具體哪里出問題了。 下面就教大家如何打印mybatis最終生成并執(zhí)行的sql。 我們直接搜索org.apache.ibatis.logging.jdbc包下的ConnectionLogger、PreparedStatementLogger、ResultSetLogger等類。

    2023年04月11日
    瀏覽(21)
  • springboot JPA日志打印

    springboot JPA日志打印

    1、在springboot整合jpa后再配置文件applcation.yml的時候show-sql要設(shè)置為true 這時去執(zhí)行請求,后臺就會打印sql,但是不會現(xiàn)實(shí)參數(shù),如果需要現(xiàn)在參數(shù)需要再在application.yml中添加下面的配置 這時去執(zhí)行請求,后臺就會將參數(shù)和sql都打印出來,但是sql和參數(shù)是分開的。 下面我們讓

    2024年02月15日
    瀏覽(14)
  • Springboot切面打印日志

    切面打印完整日志,以下代碼用于掃描@RestController 注解修飾的接口,并打印相關(guān)日志

    2024年02月14日
    瀏覽(13)
  • python中打印日志

    python中打印日志

    一、日志介紹 1、日志級別:日志的優(yōu)先級、重要性或者嚴(yán)重程度 2、日志的作用:調(diào)試程序,跟蹤定位bug,分析用戶行為與數(shù)據(jù)統(tǒng)計(jì) 3、常見的日志級別(從小級別到大級別排序): ????????debug:調(diào)試級別,打印非常詳細(xì)的日志信息,通常用于代碼調(diào)試 ????????inf

    2024年02月09日
    瀏覽(27)
  • mybatis打印sql日志

    我們?nèi)粘2僮鲾?shù)據(jù)庫的過程一般都是使用mybatis中執(zhí)行sql操作,有時候?yàn)榱舜_認(rèn)mybatis拼接的sql是否正確,就需要在日志中打印出具體的sql語句,對應(yīng)的入?yún)⒁约皵?shù)據(jù)庫的返回值 一.sql日志輸出到控制臺,修改mybatis-config文件,指定如下配置: 二.sql日志輸出到文件,修改mybatis

    2024年02月15日
    瀏覽(20)
  • 53 最佳實(shí)踐-安全最佳實(shí)踐-虛擬機(jī)可信啟動

    53 最佳實(shí)踐-安全最佳實(shí)踐-虛擬機(jī)可信啟動

    53 最佳實(shí)踐-安全最佳實(shí)踐-虛擬機(jī)可信啟動 53.1 概述 可信啟動包含度量啟動和遠(yuǎn)程證明。其中虛擬化組件主要提供度量啟動功能,遠(yuǎn)程證明由用戶自己在虛擬機(jī)中安裝相關(guān)軟件(RA client)及搭建遠(yuǎn)程證明服務(wù)器(RA server)進(jìn)行使能。 度量啟動的兩個基本要素是信任根和信任鏈

    2024年02月10日
    瀏覽(47)
  • Hive終端命令行打印很多日志時,如何設(shè)置日志級別

    Hive終端命令行打印很多日志時,如何設(shè)置日志級別

    示例:use test; 切換到test數(shù)據(jù)庫時,輸出很多日志信息不方便看結(jié)果,如下圖。 ? 解決方法: 退出hive命令行界面(ctrl+C) 執(zhí)行“vi /usr/local/apache-hive-3.1.2-bin/conf/log4j.properties”命令,創(chuàng)建并編輯log4j.properties文件,添加以下內(nèi)容。(完成后保存退出) ? 再次通過“hive”指令進(jìn)

    2024年02月13日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包