go語言中日誌第三方包log4go的使用

2021-08-17 08:10:17 字數 2145 閱讀 6359

文中通重載入配置檔案使用log4go。

二、配置檔案log4go.xml

stdout

console

info

file

file

debug

test_client.log

[%d %t] [%l] (%s) %m

true

10m0k

false

xmllog

xmltrace

trace.xml

true

100m

6kfalse

donotopen

socket

finest

192.168.1.255:12124

udp

三、使用

log4go.loadconfiguration("log4go.xml")
這樣將會在go專案的當前資料夾裡生成乙個test_client.log的日誌檔案。專案中通過log4go.info(""),log4go.error("")等寫入日誌

四、拓展

參考第二步配置檔案的紅色部分,若改為

log/test_client.log

再執行就會報錯
filelogwriter("log/test_client.log"): open log/test_client.log: the system cannot find the path specified.

panic: runtime error: invalid memory address or nil pointer dereference [recovered]

panic: runtime error: invalid memory address or nil pointer dereference

因為找不到目錄log。為此對log4go的filelog.go的newfilelogwriter(fname string,rotate bool)方法進行了修改。

func newfilelogwriter(fname string, rotate bool) *filelogwriter  else 

if end != -1

if !res else

} }w := &filelogwriter

// open the file for the first time

if err := w.introtate(); err != nil

go func() ))

w.file.close()

}}()

for

case rec, ok := <-w.rec:

if !ok

now := time.now()

if (w.maxlines > 0 && w.maxlines_curlines >= w.maxlines) ||

(w.maxsize > 0 && w.maxsize_cursize >= w.maxsize) ||

(w.daily && now.day() != w.daily_opendate)

}// perform the write

n, err := fmt.fprint(w.file, formatlogrecord(w.format, rec))

if err != nil

// update the counts

w.maxlines_curlines++

w.maxsize_cursize += n

}} }()

return w

}//determine if a file or folder exists

//if bool is true,the file or folder exists

func pathexists(path string) (bool, error)

if os.isnotexist(err)

return false, err

}

再次執行,就會在

go專案的當前資料夾裡生成log/

test_client.log。

go匯入第三方包

最好的學習方式就是實踐。我們通過匯入gin包來深入學習。首先回想一下,我們安裝goland的時候,設定了幾個比較重要的環境變數,也就是goroot和gopath。goroot比較容易理解。也就是我們go語言的安裝目錄,標準庫什麼的就放在裡面的。在linux中的話,預設安裝到 usr lib go中,...

Go第三方日誌庫logrus

目錄 六 字段 七 預設字段 八 日誌條目 九 hooks 十 格式化 十一 記錄函式名 go 從入門到放棄完整教程目錄 更有python go pytorch tensorflow 爬蟲 人工智慧教學等著你 更新 更全的 go從入門到放棄 的更新 更有python go 人工智慧教學等著你 日誌是...

Go第三方日誌庫logrus

日誌是程式中必不可少的乙個環節,由於go語言內建的日誌庫功能比較簡潔,我們在實際開發中通常會選擇使用第三方的日誌庫來進行開發。本文介紹了logrus這個日誌庫的基本使用。logrus是go golang 的結構化logger,與標準庫logger完全api相容。它有以下特點 使用logrus最簡單的...