自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

日志到底該如何打印?

商務(wù)辦公
最近在做新項(xiàng)目,一直在加班,期間遇到很多問(wèn)題,我把一部分歸類(lèi)為設(shè)計(jì)原則的問(wèn)題,當(dāng)然,這里的設(shè)計(jì)原則不是特指那個(gè)SOLID五大原則,這里是指更廣義的設(shè)計(jì)原則,不喜勿噴。

 [[376361]]

最近在做新項(xiàng)目,一直在加班,期間遇到很多問(wèn)題,我把一部分歸類(lèi)為設(shè)計(jì)原則的問(wèn)題,當(dāng)然,這里的設(shè)計(jì)原則不是特指那個(gè)SOLID五大原則,這里是指更廣義的設(shè)計(jì)原則,不喜勿噴。

今天,我們來(lái)看第一個(gè)問(wèn)題: 日志到底該如何打印?

咋一看,這個(gè)問(wèn)題很簡(jiǎn)單,其實(shí)不然,我隨手寫(xiě)幾個(gè),您看看。

  1. log.error("xxxxx"); 
  2.  
  3. log.error(e.getMessage()); 
  4.  
  5. log.error("xxxxx", e.getMessage()); 
  6.  
  7. log.error("xxxxx {}", e.message()); 
  8.  
  9. log.error("xxxxx {}", e); 

好了,就隨便寫(xiě)這么多,地鐵上打字不太方便,您認(rèn)為上面那些日志打印方式哪些是正確的?

實(shí)話說(shuō),沒(méi)有正確的,全是錯(cuò)的。怎么樣,是不是踩坑了,是不是給別人埋過(guò)這樣的坑。

那么,怎么打印日志才是正確的呢?

如果您使用的是slf4j,那么,只有下面這一種是正確的:

log.error("xxxxx, userId={}, xxParam={}", userId, xxParam, e);

首先,打印日志必須帶上上下文信息,比如,用戶ID,關(guān)鍵參數(shù),同時(shí),如果是捕獲異常里面打印的日志,必須把原來(lái)的e打印出來(lái),否則,排查日志想死的心都有了。

比如,我最近就遇到一個(gè)同學(xué),他把遠(yuǎn)程調(diào)用用一個(gè)try catch包著,并在catch中捕獲了異常,打印了日志"遠(yuǎn)程調(diào)用錯(cuò)誤xxx",呵呵,有一次請(qǐng)求失敗,非要說(shuō)遠(yuǎn)程調(diào)用失敗,對(duì)方出錯(cuò)了,對(duì)方說(shuō)我沒(méi)收到請(qǐng)求呀,兩人撕逼,最后找到我,我一看這代碼,說(shuō)了一句,把e打印出來(lái)再重新調(diào)用,結(jié)果可想而知,他自己空指針了,呵呵了。

再說(shuō)回上面的打印方式,有的同學(xué)可能會(huì)質(zhì)疑,前面引號(hào)里明明是兩個(gè)大括號(hào),后面卻出現(xiàn)3個(gè)變量,確定這個(gè)e能打印出來(lái)?

你是在懷疑我嗎?自己看源碼去。源碼中已經(jīng)明確寫(xiě)了如果最后一個(gè)參數(shù)是Exception類(lèi)型,就不會(huì)參與字符串格式化,會(huì)單獨(dú)拿出來(lái)打印,同時(shí),可以打印出堆棧信息??丛创a去吧,我在地鐵上,就不截圖了。

你以為本篇文章就結(jié)束了嗎?那你就錯(cuò)了。

有沒(méi)有更優(yōu)雅的日志打印方式呢?

我認(rèn)為,最好的日志是以解決問(wèn)題的方式打印日志。

怎么理解呢?

我們以服務(wù)注冊(cè)為例,當(dāng)注冊(cè)中心地址不通的時(shí)候,我們能不能這樣打印呢?

"從 112.112.112.112 到注冊(cè)中心 113.113.113.113的網(wǎng)絡(luò)不通,請(qǐng)檢查注冊(cè)中心是否啟動(dòng),網(wǎng)絡(luò)防火墻是否暢通,balabala"。

這樣的方式就比較好,給使用者提供解決方案,你只要按著給出的方案排查一下,大概率就能解決了你的問(wèn)題,這才是最優(yōu)雅的打印姿勢(shì)。

好了,今天的內(nèi)容就到這里,嗐,差點(diǎn)坐過(guò)站。

本文轉(zhuǎn)載自微信公眾號(hào)「 彤哥讀源碼  」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系 彤哥讀源碼  公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: 彤哥讀源碼
相關(guān)推薦

2020-07-14 14:40:05

激光噴墨打印

2021-03-04 09:11:57

日志開(kāi)發(fā)打印

2022-05-16 10:59:46

GPIOLinux內(nèi)核

2018-03-13 11:13:07

噴墨激光打印機(jī)

2021-07-08 21:51:03

5G技術(shù)Wi-Fi 6

2022-06-14 21:14:18

5.5GAI數(shù)字化

2024-01-25 18:00:56

微服務(wù)系統(tǒng)KafkaRabbitMQ

2019-08-20 09:16:39

6G網(wǎng)絡(luò)1G

2022-02-23 21:08:53

數(shù)字4G5G

2015-06-02 11:26:29

產(chǎn)品團(tuán)隊(duì)

2011-07-28 20:32:51

2011-07-29 10:51:26

2020-06-02 14:40:42

5G邊緣計(jì)算物聯(lián)網(wǎng)

2025-03-31 08:04:50

MySQLCPU內(nèi)存

2015-09-25 11:03:14

數(shù)據(jù)中心日志分析

2020-12-30 09:00:00

安全工具攻擊

2017-01-06 14:57:02

2009-04-24 08:26:02

Mobile Mark移動(dòng)OS

2017-04-05 21:43:08

MQ互聯(lián)網(wǎng)架構(gòu)

2023-03-15 08:42:06

form表單設(shè)計(jì)接口
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)