etcd: Index | Files

package logutil

import ""

Package logutil includes utilities to facilitate logging.


Package Files

discard_logger.go doc.go log_level.go logger.go zap.go zap_grpc.go zap_journal.go zap_raft.go


var DefaultLogLevel = "info"
var DefaultZapLoggerConfig = zap.Config{
    Level: zap.NewAtomicLevelAt(ConvertToZapLevel(DefaultLogLevel)),

    Development: false,
    Sampling: &zap.SamplingConfig{
        Initial:    100,
        Thereafter: 100,

    Encoding: "json",

    EncoderConfig: zapcore.EncoderConfig{
        TimeKey:        "ts",
        LevelKey:       "level",
        NameKey:        "logger",
        CallerKey:      "caller",
        MessageKey:     "msg",
        StacktraceKey:  "stacktrace",
        LineEnding:     zapcore.DefaultLineEnding,
        EncodeLevel:    zapcore.LowercaseLevelEncoder,
        EncodeTime:     zapcore.ISO8601TimeEncoder,
        EncodeDuration: zapcore.StringDurationEncoder,
        EncodeCaller:   zapcore.ShortCallerEncoder,

    OutputPaths:      []string{"stderr"},
    ErrorOutputPaths: []string{"stderr"},

DefaultZapLoggerConfig defines default zap logger configuration.

func ConvertToZapLevel Uses

func ConvertToZapLevel(lvl string) zapcore.Level

ConvertToZapLevel converts log level string to zapcore.Level.

func MergeOutputPaths Uses

func MergeOutputPaths(cfg zap.Config) zap.Config

MergeOutputPaths merges logging output paths, resolving conflicts.

func NewGRPCLoggerV2 Uses

func NewGRPCLoggerV2(lcfg zap.Config) (grpclog.LoggerV2, error)

NewGRPCLoggerV2 converts "*zap.Logger" to "grpclog.LoggerV2". It discards all INFO level logging in gRPC, if debug level is not enabled in "*zap.Logger".

func NewGRPCLoggerV2FromZapCore Uses

func NewGRPCLoggerV2FromZapCore(cr zapcore.Core, syncer zapcore.WriteSyncer) grpclog.LoggerV2

NewGRPCLoggerV2FromZapCore creates "grpclog.LoggerV2" from "zap.Core" and "zapcore.WriteSyncer". It discards all INFO level logging in gRPC, if debug level is not enabled in "*zap.Logger".

func NewJournalWriter Uses

func NewJournalWriter(wr io.Writer) (io.Writer, error)

NewJournalWriter wraps "io.Writer" to redirect log output to the local systemd journal. If journald send fails, it fails back to writing to the original writer. The decode overhead is only <30µs per write. Reference:

func NewRaftLogger Uses

func NewRaftLogger(lcfg *zap.Config) (raft.Logger, error)

NewRaftLogger builds "raft.Logger" from "*zap.Config".

func NewRaftLoggerFromZapCore Uses

func NewRaftLoggerFromZapCore(cr zapcore.Core, syncer zapcore.WriteSyncer) raft.Logger

NewRaftLoggerFromZapCore creates "raft.Logger" from "zap.Core" and "zapcore.WriteSyncer".

func NewRaftLoggerZap Uses

func NewRaftLoggerZap(lg *zap.Logger) raft.Logger

NewRaftLoggerZap converts "*zap.Logger" to "raft.Logger".

type Logger Uses

type Logger interface {

    // Lvl returns logger if logger's verbosity level >= "lvl".
    // Otherwise, logger that discards everything.
    Lvl(lvl int) grpclog.LoggerV2

Logger defines logging interface. TODO: deprecate in v3.5.

func NewDiscardLogger Uses

func NewDiscardLogger() Logger

NewDiscardLogger returns a new Logger that discards everything except "fatal".

func NewLogger Uses

func NewLogger(g grpclog.LoggerV2) Logger

NewLogger wraps "grpclog.LoggerV2" that implements "Logger" interface.

For example:

var defaultLogger Logger
g := grpclog.NewLoggerV2WithVerbosity(os.Stderr, os.Stderr, os.Stderr, 4)
defaultLogger = NewLogger(g)

Package logutil imports 15 packages (graph) and is imported by 184 packages. Updated 2020-05-01. Refresh now. Tools for package owners.