go開發屬於自己的日誌庫 檔案日誌庫實現

2021-08-31 09:33:12 字數 1500 閱讀 3077

所以,我們的日誌列印的內容應該是這樣的:

2018-11

-0818:

18:18.888 debug [logdebug.

go/logdebug.debug:

20] this is a debug log

我們現在file.go的debug方法中將時間加入進去:

func

(f *filelog)

debug

(format string

, args ...

inte***ce

)

然後我們再講日誌級別加進去,我們之前定義了日誌級別常量,但是因為使用的iota,所以使用常量的時候,常量的值都是012,這種基本是沒人看的懂的,所以我們需要將日誌級別已字串的形式列印。我們在log_const.go中新增乙個方法:

func

loglevelstring

(level int

)(levelstr string

)return

}

可以看到我們制定制定的日誌格式裡面還有乙個行號,檔名,所以我們還需要獲取錯誤日誌所在的行號的檔名,新建util.go

package hm_log

import

("runtime"

)func

getlineinfo()

(filename, funcname string

, lineno int

)return

}

繼續完善debug方法:

func

(f *filelog)

debug

(format string

, args ...

inte***ce

)

然後再執行go.test,檢視我們的日誌檔案,可以看到日誌內容和之前定義的格式相同了。然後就其他方法修改為debug方法相同的**即可。但是這樣太麻煩了,我們提取乙個公共函式來回省點我們很多時間。

func

(f *filelog)

writelog

(file *os.file, level int

, format string

, args...

inte***ce

func

(f *filelog)

debug

(format string

, args ...

inte***ce

)...

func

(f *filelog)

warn

(format string

, args ...

inte***ce

)...

go開發屬於自己的日誌庫 日誌切分

在檔案日誌中,還存在乙個問題,就是在日誌寫檔案時間長了以後,日誌檔案肯定會非常大,內容非常多,這個時候如果我們需要去定位乙個錯誤,會耗費很長的時間。所以我們需要將日誌檔案進行分割,分割檔案我們可以採用一天分割一次,或者檔案大小達到乙個體積進行分割。log const.go const logspli...

go 開發屬於自己的日誌庫 檔案日誌庫原型實現

新建乙個專案,這裡我用的hm log,在專案下新建乙個log inte ce.go日誌規範,定義日誌級別的方法 package hm log type log inte ce 表示接收可變引數 trace format string,args inte ce info format string,a...

go開發屬於自己的日誌庫 日誌庫需求分析

go的第三方框架中已經有很多日誌庫了,為什麼還要自己寫一遍。俗話說,好記性不如爛筆頭,更何況是程式語言呢。多寫多練才能使自己技術進步。一般來說,日誌庫支援檔案寫入和console顯示,還有的支援寫入在網路服務中,這次的日誌庫,只需要實現檔案寫入和console就可以了。debug 除錯程式,日誌最詳...