亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 zap.logger 簡單地從 stdout 讀?。ǘ粍摻ㄎ募?/h1>

出于測試目的,現在我有了這個 zapLogger 的配置,并寫入了“errors.log”。在測試中,我讀取了文件,比較了一些需要的文本,并在測試完成后將其刪除。l := logger.New(zap.Config{Level: level, Encoding: "json", OutputPaths: []string{"errors.log"}}).    With(zap.String("app-env", cfg.APP.Environment), zap.String("app-version", cfg.APP.Version))//reading logs in different file...data, _ := os.ReadFile("errors.log")actual := string(data)是否可以在不創建文件并從 os.Stdout 讀取或將日志保存到緩沖區的情況下執行此操作?我嘗試了幾次但沒有運氣。我應該在這里更改什么才能在不創建文件的情況下讀取測試日志?
查看完整描述

1 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

似乎有一種構造方法func New(core zapcore.Core, options ...Option)(https://github.com/uber-go/zap/blob/master/logger.go#L67)因為Core有一種構造方法func NewCore(enc Encoder, ws WriteSyncer, enab LevelEnabler)(https://github.com/uber-go/ zap/blob/master/zapcore/core.go#L58 ),ws指定將數據寫入的位置。您可以直接設置 abytes.Buffer并WriteSyncer傳遞它。


請注意,對于日志記錄中發生的錯誤,似乎需要WriteSyncer設置另一個錯誤。當你創建一個新的記錄器時,你可以傳遞一個ErrorOutput選項(https://github.com/uber-go/zap/blob/master/options.go#L55 )。


這是一個草圖:


import (

    "go.uber.org/zap"

    "go.uber.org/zap/zapcore"

)


var buff bytes.Buffer

var errorBuff bytes.Buffer

logger := zap.New(

    zapcore.NewCore(zapcore.NewJSONEncoder(

        zapcore.EncoderConfig{}), zapcore.AddSync(&buff),

        zapcore.DPanicLevel

    ),

    zap.ErrorOutput(zapcore.AddSync(&errorBuff)),

)


查看完整回答
反對 回復 2023-02-14
  • 1 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

了解更多

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號