golang zap log打印變量動(dòng)詞出現(xiàn)多余的符號(hào) []問題

楔子

zap一款高性能日志框架,由于業(yè)務(wù)場景需要,也對(duì)比了一些主流的日志框架,最后權(quán)衡選擇它比較適合峰髓。

準(zhǔn)備工作

根據(jù)官方教程工禾,以及相關(guān)文章瘫怜,迅速簡單搭建淺淺封裝一層于是代碼如下非常簡單:

圖1
圖2

大概流程通過New()方法讀取配置文件創(chuàng)建相應(yīng)的級(jí)別以及日志輸出格式控制更扁,然后返回一個(gè)日志句柄賦值給_logger和_sugger.

OK到目前為止準(zhǔn)備工作基本完成

問題復(fù)現(xiàn)

我們先打一條日志

圖3

conf.New()方法為讀取配置文件,然后把日志文件的配置傳給log.New()對(duì)象,然后我們調(diào)用log.Infof()方法打印日志翰铡。好的日志打印出來了,但是仔細(xì)看日志內(nèi)容發(fā)現(xiàn)了問題饵溅,如圖4

圖4

如你所見多出了'[]'中括號(hào)妨退,為什么?難道是[%s]格式verb動(dòng)詞的緣故蜕企?于是更改下格式再次打印如下:

圖5

看來不是這個(gè)緣故了,確實(shí)有些匪夷所思,起初我以為我沒用對(duì)zap,姿勢不對(duì)咬荷,于是我從zap配置上入手,我改成了json模式(當(dāng)前是conlse)以及相關(guān)的配置都沒有生效轻掩,再后來我上githu上搜了一圈也沒有搜到幸乒,這讓我有些摸不著頭腦,難道是bug唇牧?當(dāng)時(shí)想發(fā)起一個(gè)issue了罕扎,但是我想這不太可能,這種問題相對(duì)而言比較低級(jí)丐重,肯定有人碰到過腔召,或者說是一個(gè)低級(jí)錯(cuò)誤,才沒有相應(yīng)的文章扮惦,于是我開始追源代碼臀蛛,大概看了一下也沒有看到什么問題,但是有一處看著比較可疑于是開了DEBUG模式如下:

圖6

注意標(biāo)注的值變化,繼續(xù)追蹤

圖7
圖8

此刻我們發(fā)現(xiàn)s:=string(p.buf)這行的值其實(shí)已經(jīng)就是我們要打印的實(shí)際內(nèi)容了浊仆,從而也發(fā)現(xiàn)%s 動(dòng)詞 也被替換成了 [go] ,ok到這其實(shí)問題已經(jīng)差不多明朗了客峭。那么再看下如下代碼來說明這個(gè)問題。

圖9

這次問題明朗了氧卧,其實(shí)就是go語法糖的問題桃笙, v... 這種方式就是把切片對(duì)象給打散,相當(dāng)于拆分成多個(gè)單個(gè)對(duì)象沙绝,而直接傳v相當(dāng)于傳了一個(gè)整體切片對(duì)象,切片對(duì)象打印當(dāng)然是[]這種形式了搏明。回過頭來再看下代碼闪檬,

圖10

果然沒采用把參數(shù)打散的形式傳參,相當(dāng)于傳了一個(gè)切片對(duì)象,只需要把a(bǔ)rgs后面加上三個(gè)點(diǎn)即可,測試如下:

圖11

結(jié)語

golang雖然語法相對(duì)簡單容易上手星著,但是有些意想不到的坑讓你著實(shí)抓狂,但每次遇到問題都會(huì)讓你學(xué)到一些新的東西,對(duì)go的認(rèn)知更加深刻粗悯。

此外還有一個(gè)問題虚循,就是當(dāng)infof逗號(hào)后邊的參數(shù)大于等于兩個(gè)以上時(shí),第二個(gè)參數(shù)會(huì)造成不能替換的問題,原因還是傳切片對(duì)象的緣故样傍。

水一篇文章横缔。。衫哥。

一個(gè)用golang得尵ジ眨科生

完~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過簡信或評(píng)論聯(lián)系作者撤逢。
  • 序言:七十年代末膛锭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蚊荣,更是在濱河造成了極大的恐慌初狰,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件互例,死亡現(xiàn)場離奇詭異奢入,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)敲霍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門俊马,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肩杈,你說我怎么就攤上這事柴我。” “怎么了扩然?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵艘儒,是天一觀的道長。 經(jīng)常有香客問我,道長界睁,這世上最難降的妖魔是什么觉增? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮翻斟,結(jié)果婚禮上逾礁,老公的妹妹穿的比我還像新娘。我一直安慰自己访惜,他們只是感情好嘹履,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著债热,像睡著了一般砾嫉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上窒篱,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天焕刮,我揣著相機(jī)與錄音,去河邊找鬼墙杯。 笑死配并,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的高镐。 我是一名探鬼主播荐绝,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼避消!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起召夹,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤岩喷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后监憎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纱意,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年鲸阔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了偷霉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡褐筛,死狀恐怖类少,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情渔扎,我是刑警寧澤硫狞,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響残吩,放射性物質(zhì)發(fā)生泄漏财忽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一泣侮、第九天 我趴在偏房一處隱蔽的房頂上張望即彪。 院中可真熱鬧,春花似錦活尊、人聲如沸隶校。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惠况。三九已至,卻和暖如春宁仔,著一層夾襖步出監(jiān)牢的瞬間稠屠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國打工翎苫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留权埠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓煎谍,卻偏偏與公主長得像攘蔽,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子呐粘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 一作岖、log日志包 log支持并發(fā)操作唆垃。其結(jié)構(gòu)定義如下: log基本日志格式 (1)Golang's log模塊主要...
    學(xué)生黃哲閱讀 10,562評(píng)論 3 35
  • golang高性能日志庫zap配置示例 zap是uber開源的Go高性能日志庫,gitlab地址 安裝 請(qǐng)注意痘儡,z...
    唐僧取經(jīng)閱讀 10,362評(píng)論 3 13
  • 目錄 1.go 各種代碼運(yùn)行 2.go 在線編輯代碼運(yùn)行 3.通過 Gob 包序列化二進(jìn)制數(shù)據(jù) 4.使用 ...
    楊言錫閱讀 1,127評(píng)論 0 1
  • 1沉删、問題描述 之前使用定義mapper接口的方式來訪問數(shù)據(jù)庫渐尿,只可以正常打印SQL語句的,但是最近換成了SqlSe...
    summermsp閱讀 5,764評(píng)論 0 0
  • 在工程化的Go語言開發(fā)項(xiàng)目中矾瑰,Go語言的源碼復(fù)用是建立在包(package)基礎(chǔ)之上的砖茸。本文介紹了Go語言中如何定...
    雪上霜閱讀 241評(píng)論 0 0