go開發屬於自己的日誌庫 日誌庫易用性封裝

2021-08-31 09:33:12 字數 2764 閱讀 3812

檔案日誌和console日誌也完成了,我們試試在其他其他使用一下。在我們之前的server中,main.go輸入一下**:

package main

import

"hm_log"

var log hm_log.log

func

initlog

(logpath, logname string

)func

run(

)func

main()

執行這個程式,可以看到終端成功的輸入了日誌,然後試試檔案日誌庫。

但是這樣有乙個麻煩就是,每個相關都需要宣告乙個log,還是麻煩,所以我們需要進行提煉,將log 全域性變數封裝到我們的日誌庫中,只給乙個初始函式,使用的時候直接log變數即可。進入我們的hm_log專案中,新建乙個log.go

package hm_log

import

"fmt"

var log log

func

initlog

(name string

, config map

[string

]string

)(err error

)return

}func

debug

(format string

, args ...

inte***ce

)func

trace

(format string

, args ...

inte***ce

)func

info

(format string

, args ...

inte***ce

)func

warn

(format string

, args ...

inte***ce

)func

error

(format string

, args ...

inte***ce

)func

fatal

(format string

, args ...

inte***ce

)func

close()

由於檔案日誌需要配置多個引數,這是我們直接使用map來進行傳參即可。因為傳的是map,所以我們的檔案日誌庫file.go也需要進行修改:

func

newfilelog

(config map

[string

]string

)(logfile log, err error

) logname, ok := config[

"log_name"]if

!ok

logfile =

&filelog

logfile.

init()

return

}

logfile.init()這裡是會報錯的,因為filelog沒有這個方法,所以文們需要加上乙個init()方法。進入log_inte***ce.go:

package hm_log

type log inte***ce

)// ...表示接收可變引數

trace

(format string

, args ...

inte***ce

)info

(format string

, args ...

inte***ce

)warn

(format string

, args ...

inte***ce

)error

(format string

, args ...

inte***ce

)fatal

(format string

, args ...

inte***ce

)close()

// 檔案需要進行關閉操作

init()

}

把我們之前的file.go,console.go給加上init():

file.go

// 替換之前的init()

func

(f *filelog)

init()

console.go

func

(f *filelog)

init()

我們再來修改之前的main.go:

package main

import

"hm_log"

func

initlog

(logpath, logname string)}

func

run(

)func

main()

這樣我們就不需要宣告全域性變數log,使用起來就很方便了。執行乙個,可以正常的使用。

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

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

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

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

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

所以,我們的日誌列印的內容應該是這樣的 2018 11 0818 18 18.888 debug logdebug.go logdebug.debug 20 this is a debug log我們現在file.go的debug方法中將時間加入進去 func f filelog debug for...