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

2021-08-31 09:33:12 字數 1397 閱讀 9977

go的第三方框架中已經有很多日誌庫了,為什麼還要自己寫一遍。俗話說,好記性不如爛筆頭,更何況是程式語言呢。多寫多練才能使自己技術進步。

一般來說,日誌庫支援檔案寫入和console顯示,還有的支援寫入在網路服務中,這次的日誌庫,只需要實現檔案寫入和console就可以了。

debug: 除錯程式,日誌最詳細。但是會影響程式的效能。

trace: 追蹤問題。

info: 列印日誌執行中比較重要的資訊,比如訪問日誌。

warn: 警告,說明程式中出現了潛在的問題。

error: 錯誤,程式執行發生了錯誤,但是不影響程式執行。

fatal: 嚴重錯誤, 會導致程式退出。

直接輸出到console

列印到檔案

為什麼要採用介面的方式來實現,來個例子就明白了。

新建乙個log專案,新建乙個file.go:

package log

import

"fmt"

type filelog struct

func

newfilelog

(file string

)*filelog

func

(f *filelog)

logdebug

(msgstring)

再新建乙個console.go檔案:

package main

import

"fmt"

type consolelog struct

func

newconsolelog()

*consolelog

func

(c *consolelog)

logdebug

(msgstring)

然後我們再新建乙個server專案,新建乙個main.go檔案,呼叫剛才寫的兩個檔案進行日誌模擬寫入列印。

比如現在我們進行日誌檔案的寫入:

package main

import

"log"

func

main()

又或者我們進行日誌的列印:

package main

import

"log"

func

main()

這樣寫的時候是看不出來有什麼的問題,但是如果專案的**累計起來了,準備進行上線,這時候你需要將之前日誌列印的地方全部修改為日誌檔案寫入,需要乙個乙個檔案的修改,非常的浪費的時間。所以採用介面開發的日誌,在擴充套件程式的維護上會非常的方便。下一遍我們開始開發日誌庫。

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

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

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...

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

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