используя zap logger с go-kit - PullRequest
       18

используя zap logger с go-kit

1 голос
/ 10 октября 2019

Я хочу использовать go-kit logger lib с zap , и я хочу, чтобы в этой функции он возвращал экземпляр zap.logger, чтобы я мог использовать его какследующее: (используя функциональность zap), например

logger.Info

или

logger.WithOptions

и т. д.

Я пытаюсь сследующий, чтобы вернуть интерфейс zap, но он не работает, методы недоступны, есть идеи, что мне здесь не хватает?

func NewZapLogger() zap.Logger  {

   cfg := zap.Config{
      Encoding:         "json",
      Level:            zap.NewAtomicLevelAt(zapcore.DebugLevel),
      OutputPaths:      []string{"stderr"},
      ErrorOutputPaths: []string{"stderr"},
      EncoderConfig: zapcore.EncoderConfig{
         MessageKey: "message",

         LevelKey:    "level",
         EncodeLevel: zapcore.CapitalLevelEncoder,

         TimeKey:    "time",
         EncodeTime: zapcore.ISO8601TimeEncoder,

         CallerKey:    "caller",
         EncodeCaller: zapcore.FullCallerEncoder,
      },
   }
   logger, _ := cfg.Build()

   sugarLogger := logz.NewZapSugarLogger(logger, zap.InfoLevel)

   return sugarLogger.

}

1 Ответ

1 голос
/ 10 октября 2019

Go Kit экспортирует свой собственный интерфейс регистрации. Они предоставляют только метод Log. Он называется zapSugarLogger и в основном это тип функции, совпадающий с функцией ведения журнала zap (Infow, Warnw и т. Д.).

Похоже, что нет способа получить доступ к базовой функциональности zap из экземпляра zapSugarLogger.

Однако вы можете создать экземпляр zap самостоятельно и использовать его как обычно.

package main

import (
    "go.uber.org/zap"
    "go.uber.org/zap/zapcore"
)

func main() {

    cfg := zap.Config{
        Encoding:         "json",
        Level:            zap.NewAtomicLevelAt(zapcore.DebugLevel),
        OutputPaths:      []string{"stderr"},
        ErrorOutputPaths: []string{"stderr"},
        EncoderConfig: zapcore.EncoderConfig{
            MessageKey: "message",

            LevelKey:    "level",
            EncodeLevel: zapcore.CapitalLevelEncoder,

            TimeKey:    "time",
            EncodeTime: zapcore.ISO8601TimeEncoder,

            CallerKey:    "caller",
            EncodeCaller: zapcore.FullCallerEncoder,
        },
    }
    logger, _ := cfg.Build()

    logger.Info("Hello")



}

...