日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

golang log4go 使用说明及丢失日志原因

發布時間:2023/11/27 生活经验 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 golang log4go 使用说明及丢失日志原因 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 描述

這個 repository 是從 alecthomas 的 log4go 重構而來的,log4go 是一個類似于用于 Java 編程語言的 log4j 的日志包。源于 Google 的一項 log 工程,官方已經停止維護更新。

倉庫地址:

https://github.com/jeanphorn/log4go.git

2. 特點

  • 日志輸出到終端
  • 日志輸出到文件,支持按大小和時間切片
  • 日志輸出到網絡
  • 日志異步輸出
  • 支持 json 文件配置
  • 日志分類
    • 不同類別的日志,輸出到不同的printer中.
  • 兼容老的日志方式

3. 使用示例

  1. 下載源碼
go get github.com/jeanphorn/log4go
  1. 導入進工程
import log "github.com/jeanphorn/log4go"
  1. 具體步驟,請查看

https://github.com/jeanphorn/log4go

4. 不用配置文件使用

也可以不適用配置文件,直接在代碼中設置好 log 的格式、回滾級別、備份日志個數等,代碼示例如下:

package mainimport (l4g "github.com/jeanphorn/log4go"
)var (Log l4g.Logger = make(l4g.Logger)
)func InitLog(filename string) {_, err := os.Stat("./log/")if  os.IsNotExist(err) {os.Mkdir("./log/", 0755)}flw := l4g.NewFileLogWriter("./log/"+filename, false, false)flw.SetFormat("[%D %T] [%L] (%S) %M")flw.SetRotate(true)flw.SetRotateSize(1 * 1024 * 1024) // 10Mflw.SetRotateMaxBackup(10)         // 備份的日志文件數量flw.SetRotateDaily(false)	// 不按天回滾flw.SetSanitize(true)Log.AddFilter("file", l4g.INFO, flw)Log.Info("Log init done")time.Sleep(100 * time.Microsecond)
}func main() {InitLog("test.log")Log.Info("this is info")
}

但是運行之后,log 文件中沒有日志打印,原因是:

log4go 用的是 channel 暫存日志,打印會另起一個 goroutine 進行,但是主 goroutine 退出太快時,負責打印日志的 goroutine 沒機會把 channel 中的日志打印出來,導致日志丟失

5. 解決方法

在程序最后加上: time.Sleep(time.Microsecond)sleep() 調用會留給打印日志的 goroutine 執行的時間。

func main() {InitLog("test.log")Log.Error("this is error")time.Sleep(100 * time.Microsecond)Log.Info("this is info")time.Sleep(100 * time.Microsecond)
}

6. 其它 log 庫

  1. https://github.com/hhkbp2/go-logging.git
  2. https://github.com/cihub/seelog

參考:

  1. https://stackoverrun.com/cn/q/3852638
  2. https://www.v2ex.com/amp/t/239039

總結

以上是生活随笔為你收集整理的golang log4go 使用说明及丢失日志原因的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。