日志使用占位符還是直接拼接

在開發(fā)和生產(chǎn)環(huán)境,我們經(jīng)常依賴log來幫我們定位問題,這時候會使用不用的log級別,debug,info,warn,error等。今天在和同事討論的過程中,聊到了日志占位符的問題。
以及使用占位符的優(yōu)點,然后自己簡單做了一下性能測試,加深了對占位符的理解。

占位符和直接拼接的性能比較

通過main方法for循環(huán)測試占位符和直接拼接10w次以后的用時,發(fā)現(xiàn)直接性能拼接的耗時較短;那么這樣可以得到一個簡單的結(jié)論,拼接耗時短,性能表面上看要比占位符性能高。
既然這樣的話,我們?yōu)槭裁床恢苯邮褂闷唇?,反而越來越多的框架選擇使用了占位符。

從實際出發(fā)

回到項目,一般項目里面有很多debug級別的日志,可以幫助我們快速定位線上問題,提交生產(chǎn)解決問題的效率,但是一般線上的日志級別會比較高,debug是不會打印的,這個時候就出現(xiàn)了一個問題,拼接的時候會進(jìn)行內(nèi)存空間的開辟,stringbuilder進(jìn)行拼接,但是進(jìn)入日志斷點后,發(fā)現(xiàn)并不需要進(jìn)行日志打印,這部分的開銷就變的沒有意義,而使用占位符的時候,只有需要打印的時候才會進(jìn)行拼接,減少了內(nèi)存的開銷,性能得到了提升。

最后

使用占位符是一個最佳實踐,當(dāng)然我覺得還是要根據(jù)實際的情況,如果確定100%需要進(jìn)行日志打印,而且日志級別較高,我覺得直接拼接是更好的選擇,不過如果公司有規(guī)范的話,還是按照規(guī)范來執(zhí)行。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容