package
0.0.0-20240930111939-8d08343a7663
Repository: https://github.com/diycoder/elf.git
Documentation: pkg.go.dev

# Packages

No description provided by the author

# README

日志组件说明

日志组件分为 Logger 跟 Writer 两块,对第三方库进行二次封装提供统一接口。

logger包说明

  • logger包是一组实现Logger接口的组件。
type Logger interface {
	Debug(args ...interface{})
	Debugf(format string, args ...interface{})
	Info(args ...interface{})
	Infof(format string, args ...interface{})
	Warn(args ...interface{})
	Warnf(format string, args ...interface{})
	Error(args ...interface{})
	Errorf(format string, args ...interface{})
	Trace(args ...interface{})
	Tracef(format string, args ...interface{})
	Panic(args ...interface{})
	Panicf(format string, args ...interface{})
	Fatal(args ...interface{})
	Fatalf(format string, args ...interface{})

	WithField(key string, value interface{}) Logger
	WithFields(fields map[string]interface{}) Logger

	SetLogLevel(level Level) error
}

writer包说明

  • writer包是一组实现io.Writer接口的组件。
type Writer interface {
	Write(p []byte) (n int, err error)
}

Option

    // log options    

	// EncoderConfig 说明
	EncoderConfig := EncoderConfig{}
	EncoderConfig.MessageKey = "msg" // MessageKey

	EncoderConfig.LevelKey = "level"                  // LevelKey
	EncoderConfig.EncodeLevel = LowercaseLevelEncoder // 具体请看 LevelEncoder

	EncoderConfig.TimeKey = "@timestamp"               // TimeKey
	EncoderConfig.EncodeTime = RFC3339MilliTimeEncoder // 具体请看 TimeEncoder,默认RFC3339TimeEncoder

	// caller
	// note: CallerKey不为空 且 设置AddCaller 才会输出
	EncoderConfig.CallerKey = "caller"             // CallerKey
	EncoderConfig.EncodeCaller = FullCallerEncoder // CallerEncoder,默认FullCallerEncoder
	AddCaller()                                    // 显示日志调用者的文件名跟行号,默认不打开
	AddCallerSkip(1)                               // 跳过多少级caller 

	// Stacktrace
	// note: StacktraceKey不为空 且 达到Stacktrace设置的级别 才会输出
	EncoderConfig.StacktraceKey = "detail" // StacktraceKey ,配合 AddStacktrace 使用
	AddStacktrace(ErrorLevel)              // 默认ErrorLevel

	WithEncoderCfg(EncoderConfig) // 也可以使用默认配置 WithEncoderCfg(NewEncoderConfig())
	WithEncoder(JSONEncoder)      // 具体请看 Encoder,默认JSONEncoder

	WithLevelEnabler(DebugLevel)                 // 可选,设置日志输出级别,默认DebugLevel
	WithWriter(os.Stdout)                        // 可选,设置日志的wirter
	Fields(map[string]interface{}{"tech": "yes"}) // 可选,增加字段到日志输出
	ErrorOutput(os.Stderr)                       // 可选,ErrorLevel及之后的日志级别将往这里输出

Example

// Logger
opts := []Option{ // 根据实际需求添加option
    WithLevelEnabler(DebugLevel),
    WithEncoderCfg(NewEncoderConfig()), 
}

l, err := New(ZapLogger, opts...)
l.Info("Hello World!")

// Writer
wopts := []rotate.Option{ // 根据实际需求添加option
    rotate.WithLogDir("/data/log"),
    rotate.WithLogSubDir("info"),
}
w := NewWriter(wopts...)
w.Write([]byte("Hello World!"))