日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

盤點 Go 語言的那些日志庫:你用了哪個?

來源: 責編: 時間:2023-09-28 10:09:37 449觀看
導讀大家好,我是站長 polarisxu。Go語言是一種高性能、簡潔、并發友好的編程語言,廣泛用于開發各種應用程序,如網絡服務、微服務、云計算、區塊鏈等。Go語言的標準庫提供了一個基本的日志包(log),可以用于記錄簡單的日志信息,如

大家好,我是站長 polarisxu。beO28資訊網——每日最新資訊28at.com

Go語言是一種高性能、簡潔、并發友好的編程語言,廣泛用于開發各種應用程序,如網絡服務、微服務、云計算、區塊鏈等。Go語言的標準庫提供了一個基本的日志包(log),可以用于記錄簡單的日志信息,如時間、級別、消息等。但是,如果你需要更多的功能和靈活性,例如結構化日志、日志旋轉、日志鉤子、日志格式化等,那么你可能需要使用第三方的日志庫。beO28資訊網——每日最新資訊28at.com

在本文中,我們將介紹Go語言中最流行和最優秀的日志庫,并給出每個庫的使用示例代碼。我們將按照以下的大綱來介紹這些日志庫:beO28資訊網——每日最新資訊28at.com

  • Zap
  • log/slog
  • Logrus
  • Zerolog
  • Glog

Zap

Zap 是一個快速、結構化、分級和可擴展的日志庫,由Uber開發和維護。Zap提供了兩種不同的API:SugaredLogger和Logger。SugaredLogger支持結構化和非結構化的日志記錄,但是犧牲了一些性能。Logger只支持結構化的日志記錄,但是具有更高的性能和更低的內存分配。beO28資訊網——每日最新資訊28at.com

Zap還提供了一些有用的特性,如:beO28資訊網——每日最新資訊28at.com

  • 可以自定義日志級別、輸出目標、編碼器(JSON或控制臺)、時間格式等。
  • 可以使用字段(Fields)來添加結構化的上下文信息,如鍵值對。
  • 可以使用鉤子(Hooks)來在每次寫入日志時執行一些操作,如發送郵件、寫入數據庫等。
  • 可以使用取樣器(Sampler)來限制每秒寫入的日志數量,以減少性能開銷。
  • 可以使用核心(Core)來組合多個輸出目標和編碼器。

以下是一個使用Zap的示例代碼:beO28資訊網——每日最新資訊28at.com

package mainimport ( "go.uber.org/zap")func main() { // 創建一個 Logger logger, err := zap.NewDevelopment() if err != nil {  panic(err) } defer logger.Sync() sugar := logger.Sugar() // 使用SugaredLogger記錄非結構化的日志 sugar.Infow("This is a structured log",  "key1", "value1",  "key2", "value2", ) // 使用SugaredLogger記錄結構化的日志 sugar.Infof("This is an unstructured log: %s", "hello world") // 創建一個Logger logger, err = zap.NewProduction() if err != nil {  panic(err) } defer logger.Sync() // 使用Logger記錄結構化的日志 logger.Info("This is a structured log",  zap.String("key1", "value1"),  zap.String("key2", "value2"), ) // 使用Logger記錄錯誤級別的日志,并添加堆棧跟蹤信息 logger.Error("This is an error log",  zap.Error(err),  zap.Stack("stack"), )}

log/slog

log/slog是Go 1.21中引入的一個新的結構化日志庫,它與標準庫的log包兼容,但提供了更多的功能和靈活性。log/slog定義了一個類型,Logger,用于記錄不同級別和格式的日志信息。每個Logger都關聯一個Handler,用于處理日志記錄。log/slog還提供了一個默認的Logger,可以通過頂級函數(如Info和Error)來使用,它們會調用相應的Logger方法。該默認Logger將日志信息寫入標準錯誤,并在每條日志信息前添加日期和時間。beO28資訊網——每日最新資訊28at.com

log/slog的日志記錄由以下幾個部分組成:beO28資訊網——每日最新資訊28at.com

  • 時間:日志記錄發生的時間,可以是本地時間或UTC時間。
  • 級別:日志記錄的嚴重程度,可以是預定義的四個級別之一(Debug、Info、Warn、Error),也可以是自定義的整數值。
  • 消息:日志記錄的主要內容,通常是一個簡短的描述性字符串。
  • 屬性:日志記錄的額外信息,以鍵值對的形式表示,鍵是字符串,值可以是任意類型。

例如,以下代碼:beO28資訊網——每日最新資訊28at.com

package mainimport ( "log/slog" "os")func main() { slog.Info("hello, world", "user", os.Getenv("USER"))}

會產生以下輸出:beO28資訊網——每日最新資訊28at.com

2023/09/09 16:27:19 INFO hello, world user=polarisxu

其中,2023/09/09 16:27:19是時間,INFO是級別,hello, world是消息,user=polarisxu是屬性。beO28資訊網——每日最新資訊28at.com

log/slog還提供了一些有用的特性,如:beO28資訊網——每日最新資訊28at.com

  • 可以自定義日志級別、輸出目標、格式器(JSON或文本)、時間戳等。
  • 可以使用字段(Fields)來添加結構化的上下文信息,如鍵值對。
  • 可以使用處理器(Handler)來處理不同級別或條件的日志信息,如過濾、分割、彩色等。
  • 可以使用條目(Entry)來記錄帶有字段的日志信息,或者使用WithFields、WithTime、WithError等方法來創建帶有字段的條目。
  • 可以使用日志級別函數(如Info、Warn、Error等)來記錄不同級別的日志信息,或者使用Log或Print等方法來記錄默認級別的日志信息。

以下是一個使用log/slog的示例代碼:beO28資訊網——每日最新資訊28at.com

package mainimport ( "log/slog" "os")func main() { // 創建一個JSON處理器 jsonHandler := slog.NewJSONHandler(os.Stdout, nil) // 創建一個文本處理器 textHandler := slog.NewTextHandler(os.Stderr, nil) // 創建一個文本 Logger textLogger := slog.New(textHandler) // 創建一個 JSON Logger jsonLogger := slog.New(jsonHandler) // 使用Logger記錄結構化的日志信息 textLogger.Info("hello, world", "user", os.Getenv("USER")) // 使用Logger記錄結構化的日志信息 jsonLogger.Info("hello, world", "user", os.Getenv("USER"))}

該程序會在標準錯誤上輸出文本格式的日志信息:beO28資訊網——每日最新資訊28at.com

time=2023-09-09T16:27:19.000-05:00 level=INFO msg=hello, world user=polarisxu

然后在標準輸出上輸出JSON格式的日志信息:beO28資訊網——每日最新資訊28at.com

{"time":"2023-09-09T16:27:19.000000000-05:00","level":"INFO","msg":"hello","user":"polarisxu"}

Logrus

Logrus是一個結構化、分級、可擴展和兼容標準庫log包的日志庫,由Sirupsen開發和維護。Logrus提供了一個簡單而強大的API,可以用于記錄不同級別和格式的日志信息。beO28資訊網——每日最新資訊28at.com

Logrus也提供了一些有用的特性,如:beO28資訊網——每日最新資訊28at.com

  • 可以自定義日志級別、輸出目標、格式器(JSON或文本)、時間戳等。
  • 可以使用字段(Fields)來添加結構化的上下文信息,如鍵值對。
  • 可以使用鉤子(Hooks)來在每次寫入日志時執行一些操作,如發送郵件、寫入數據庫等。
  • 可以使用條目(Entry)來記錄帶有字段的日志信息,或者使用WithFields、WithTime、WithError等方法來創建帶有字段的條目。
  • 可以使用日志級別函數(如Info、Warn、Error等)來記錄不同級別的日志信息,或者使用Log或Print等方法來記錄默認級別的日志信息。

以下是一個使用Logrus的示例代碼:beO28資訊網——每日最新資訊28at.com

package mainimport ( "os" "github.com/sirupsen/logrus")func main() { // 創建一個Logrus實例 log := logrus.New() // 設置日志級別為Debug log.SetLevel(logrus.DebugLevel) // 設置輸出目標為標準輸出 log.SetOutput(os.Stdout) // 設置格式器為JSON log.SetFormatter(&logrus.JSONFormatter{}) // 使用Fields添加結構化的上下文信息 log.WithFields(logrus.Fields{  "key1": "value1",  "key2": "value2", }).Info("This is a structured log") // 使用Entry記錄帶有字段的日志信息 entry := log.WithFields(logrus.Fields{  "key3": "value3",  "key4": "value4", }) entry.Warn("This is another structured log") // 使用日志級別函數記錄不同級別的日志信息 log.Debug("This is a debug log") log.Info("This is an info log") log.Warn("This is a warn log") log.Error("This is an error log") log.Fatal("This is a fatal log") log.Panic("This is a panic log") // 使用Log或Print等方法記錄默認級別的日志信息 log.Log(logrus.InfoLevel, "This is a log with level") log.Print("This is a print log")}

Zerolog

Zerolog是一個快速、簡單、零內存分配的結構化日志庫,由rs開發和維護。Zerolog提供了一個流式(Fluent)的API,可以用于記錄不同級別和格式的日志信息。beO28資訊網——每日最新資訊28at.com

Zerolog也提供了一些有用的特性,如:beO28資訊網——每日最新資訊28at.com

  • 可以自定義日志級別、輸出目標、編碼器(JSON或控制臺)、時間格式等。
  • 可以使用字段(Fields)來添加結構化的上下文信息,如鍵值對。
  • 可以使用鉤子(Hooks)來在每次寫入日志時執行一些操作,如發送郵件、寫入數據庫等。
  • 可以使用取樣器(Sampler)來限制每秒寫入的日志數量,以減少性能開銷。
  • 可以使用上下文(Context)來創建帶有字段的日志記錄器,或者使用With、Dict等方法來添加字段。

以下是一個使用Zerolog的示例代碼:beO28資訊網——每日最新資訊28at.com

package mainimport ( "os" "github.com/rs/zerolog" "github.com/rs/zerolog/log")func main() { // 設置日志級別為Debug zerolog.SetGlobalLevel(zerolog.DebugLevel) // 設置輸出目標為標準輸出 log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stdout}) // 使用Fields添加結構化的上下文信息 log.Info().  Str("key1", "value1").  Str("key2", "value2").  Msg("This is a structured log") // 使用Context創建帶有字段的日志記錄器 sublogger := log.With().  Str("key3", "value3").  Logger() sublogger.Warn().  Str("key4", "value4").  Msg("This is another structured log") // 使用日志級別函數記錄不同級別的日志信息 log.Debug().Msg("This is a debug log") log.Info().Msg("This is an info log") log.Warn().Msg("This is a warn log") log.Error().Msg("This is an error log") log.Fatal().Msg("This is a fatal log") log.Panic().Msg("This is a panic log")}

總結

在本文中,我們介紹了Go語言中最流行和最優秀的日志庫,并給出了每個庫的使用示例代碼。這些日志庫都有各自的優點和特點,可以根據你的需求和喜好來選擇合適的日志庫。beO28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-11901-0.html盤點 Go 語言的那些日志庫:你用了哪個?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 十年老后端運行公司前端項目,連編譯都沒過去...問題出在哪?

下一篇: 我們一起再玩玩B端搭建

標簽:
  • 熱門焦點
  • 鴻蒙OS 4.0公測機型公布:甚至連nova6都支持

    華為全新的HarmonyOS 4.0操作系統將于今天下午正式登場,官方在發布會之前也已經正式給出了可升級的機型產品,這意味著這些機型會率先支持升級享用。這次的HarmonyOS 4.0支持
  • 官方承諾:K60至尊版將會首批升級MIUI 15

    全新的MIUI 15今天也有了消息,在官宣了K60至尊版將會搭載天璣9200+處理器和獨顯芯片X7的同時,Redmi給出了官方承諾,K60至尊重大更新首批升級,會首批推送MIUI 15。也就是說雖然
  • 2023 年的 Node.js 生態系統

    隨著技術的不斷演進和創新,Node.js 在 2023 年達到了一個新的高度。Node.js 擁有一個龐大的生態系統,可以幫助開發人員更快地實現復雜的應用。本文就來看看 Node.js 最新的生
  • 2023年,我眼中的字節跳動

    此時此刻(2023年7月),字節跳動從未上市,也從未公布過任何官方的上市計劃;但是這并不妨礙它成為中國最受關注的互聯網公司之一。從2016-17年的抖音強勢崛起,到2018年的“頭騰
  • 東方甄選單飛:有些鳥注定是關不住的

    文/彭寬鴻編輯/羅卿東方甄選創始人俞敏洪帶隊的“7天甘肅行”直播活動已在近日順利收官。成立后一年多時間里,東方甄選要脫離抖音自立門戶的傳聞不絕于耳,“7
  • 華為Mate60系列模具曝光:采用碩大圓形后置相機模組+拼接配色方案

    據此前多方爆料,今年華為將開始恢復一年雙旗艦戰略,除上半年推出的P60系列外,往年下半年的Mate系列也將迎來更新,有望在9-10月份帶來全新的華為Mate60
  • OPPO K11搭載長壽版100W超級閃充:26分鐘充滿100%

    據此前官方宣布,OPPO將于7月25日也就是今天下午14:30舉辦新品發布會,屆時全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣
  • OPPO K11搭載高性能石墨散熱系統:旗艦同款 性能涼爽釋放

    日前OPPO官方宣布,將于7月25日14:30舉辦新品發布會,屆時全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣點就是將配備索尼
  • 電博會與軟博會實現"線下+云端"的雙線融合

    在本次“電博會”與“軟博會”雙展會利好條件的加持下,既可以發揮展會拉動人流、信息流、資金流實現快速交互流動的作用,繼而推動區域經濟良性發展;又可以聚
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久亚洲春色中文字幕久久久| 亚洲一级黄色片| 国产亚洲精品高潮| 狠狠色丁香久久婷婷综合丁香| 亚洲成人在线视频播放| 亚洲国产一二三| 99国产精品久久久久久久久久| 在线亚洲激情| 久久精品国产视频| 欧美激情久久久| 欧美日韩在线播放三区| 国产午夜精品视频| 亚洲国产综合在线| 亚洲一区二区三区在线播放| 久久av二区| 欧美精品久久久久久久| 国产精品视频网| …久久精品99久久香蕉国产| av成人手机在线| 欧美在线免费观看| 欧美激情一区二区久久久| 国产精品久线观看视频| 又紧又大又爽精品一区二区| 这里只有视频精品| 久久久亚洲精品一区二区三区| 欧美精品成人在线| 国产日韩免费| 99精品国产在热久久婷婷| 欧美一级专区| 欧美精品一区二区三区视频| 国产欧美一区二区在线观看| 亚洲精品综合精品自拍| 欧美诱惑福利视频| 欧美区二区三区| 韩国一区二区在线观看| 一区二区三区精品视频| 老色批av在线精品| 国产欧美精品日韩区二区麻豆天美| 亚洲人午夜精品免费| 欧美自拍偷拍午夜视频| 欧美色另类天堂2015| 欲色影视综合吧| 亚洲免费伊人电影在线观看av| 麻豆精品网站| 国产日韩精品在线| 中文在线资源观看网站视频免费不卡| 老牛国产精品一区的观看方式| 国产日韩精品一区| 亚洲一级高清| 欧美激情国产精品| 极品日韩久久| 性xx色xx综合久久久xx| 欧美三级乱人伦电影| 亚洲国产va精品久久久不卡综合| 亚洲欧美日韩一区二区三区在线| 欧美日本一区| 亚洲国产一区二区三区a毛片| 欧美在线观看www| 国产精品热久久久久夜色精品三区 | 国产人成一区二区三区影院| 在线视频欧美精品| 欧美—级在线免费片| 尤物yw午夜国产精品视频明星| 欧美一区二区视频观看视频| 欧美午夜视频在线观看| 夜夜爽av福利精品导航 | 国产欧美日韩视频| 亚洲一区二区三区精品动漫| 欧美精品免费观看二区| 亚洲国产日韩一区| 麻豆九一精品爱看视频在线观看免费| 国产日韩欧美黄色| 性欧美xxxx大乳国产app| 国产精品激情电影| 亚洲一区国产视频| 欧美性猛交一区二区三区精品| 99ri日韩精品视频| 欧美日韩123| 99视频在线观看一区三区| 欧美高清视频www夜色资源网| 1000部精品久久久久久久久| 麻豆精品视频在线| 亚洲国产精品va在线看黑人动漫 | 国产精品视频久久久| 亚洲一区二区三区精品视频| 欧美日韩国产在线看| 一区二区日韩精品| 国产精品成人一区二区网站软件| 在线视频一区二区| 国产精品国产三级欧美二区| 亚洲视频大全| 国产精品热久久久久夜色精品三区| 亚洲欧美日韩直播| 国产精品自在欧美一区| 欧美在线视频网站| 狠狠久久亚洲欧美专区| 久久婷婷激情| 亚洲人成在线播放网站岛国| 欧美金8天国| 一本大道久久精品懂色aⅴ| 欧美日韩在线一区二区三区| 亚洲一区二区动漫| 国产欧美精品va在线观看| 欧美在线视频一区| 一区在线视频观看| 欧美激情第9页| 亚洲视频综合在线| 国产日韩综合| 久久琪琪电影院| 亚洲日本一区二区三区| 欧美日韩天天操| 校园激情久久| 1204国产成人精品视频| 欧美久久久久久久久| 亚洲影院免费| 狠狠色狠狠色综合日日五| 美玉足脚交一区二区三区图片| 亚洲精品日日夜夜| 国产精品久久久久aaaa| 久久国产精品黑丝| 亚洲区欧美区| 国产嫩草一区二区三区在线观看 | 男同欧美伦乱| 亚洲午夜精品久久久久久浪潮| 国产日韩综合一区二区性色av| 免费成人激情视频| 亚洲天堂成人| 激情综合色丁香一区二区| 欧美不卡在线视频| 亚洲尤物视频网| 伊人色综合久久天天五月婷| 欧美日韩成人在线| 羞羞答答国产精品www一本 | 精品二区视频| 欧美日韩国产影院| 久久国产色av| 亚洲精品一区二区三| 国产农村妇女精品一区二区| 免费欧美在线视频| 午夜国产精品影院在线观看 | 国外成人在线| 欧美日韩国产一区精品一区| 久久激情视频| 一区二区欧美视频| 一区二区视频免费完整版观看| 欧美日韩午夜精品| 久久漫画官网| 亚洲中字在线| 亚洲精品久久7777| 国产主播一区二区三区| 欧美日韩精品免费观看视频| 久久精品国产亚洲一区二区| 99精品99久久久久久宅男| 精品盗摄一区二区三区| 国产精品午夜在线观看| 欧美激情精品久久久久久蜜臀| 久久精彩免费视频| 亚洲五月六月| 亚洲三级影片| 依依成人综合视频| 国产精品综合久久久| 欧美精品999| 美国成人直播| 欧美一区午夜视频在线观看| 一本大道久久a久久综合婷婷| 黄色成人在线网站| 国产乱子伦一区二区三区国色天香 | 欧美性生交xxxxx久久久| 美女黄网久久| 久久经典综合| 午夜精品视频一区| 一本色道久久综合狠狠躁的推荐| 伊人精品在线| 国产一区二区三区精品欧美日韩一区二区三区 | 国产精品免费视频xxxx| 欧美精品三级在线观看| 蜜乳av另类精品一区二区| 欧美在线视频在线播放完整版免费观看 | 亚洲精品国产拍免费91在线| 国内精品久久久久久| 国产精品日韩欧美一区二区| 欧美日韩国产一区二区| 欧美暴力喷水在线| 久久在线播放| 久久精品一区四区| 欧美一区二区视频97| 亚洲欧美国产制服动漫| 中文日韩在线视频| 一区二区三区日韩精品| 日韩视频在线观看免费| 亚洲激情网站| 亚洲韩国青草视频| 亚洲国产小视频| 亚洲国语精品自产拍在线观看| 一区二区三区无毛| 一区二区三区我不卡| 韩国美女久久| 国内外成人免费激情在线视频| 国产亚洲午夜| 国产综合av| 黄色欧美日韩| 在线电影一区| 亚洲高清在线播放| 亚洲国产精品久久久久久女王|