基本能力编写完成
This commit is contained in:
72
internal/logger/logger.go
Normal file
72
internal/logger/logger.go
Normal file
@@ -0,0 +1,72 @@
|
||||
package logger
|
||||
|
||||
import (
|
||||
"io"
|
||||
"os"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
var Logger zerolog.Logger
|
||||
|
||||
// InitLogger 初始化日志
|
||||
func InitLogger(level, format, output string) error {
|
||||
// 设置日志级别
|
||||
var logLevel zerolog.Level
|
||||
switch level {
|
||||
case "debug":
|
||||
logLevel = zerolog.DebugLevel
|
||||
case "info":
|
||||
logLevel = zerolog.InfoLevel
|
||||
case "warn":
|
||||
logLevel = zerolog.WarnLevel
|
||||
case "error":
|
||||
logLevel = zerolog.ErrorLevel
|
||||
default:
|
||||
logLevel = zerolog.InfoLevel
|
||||
}
|
||||
zerolog.SetGlobalLevel(logLevel)
|
||||
|
||||
// 设置输出
|
||||
var writer io.Writer
|
||||
if output == "stdout" || output == "" {
|
||||
writer = os.Stdout
|
||||
} else {
|
||||
file, err := os.OpenFile(output, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
writer = file
|
||||
}
|
||||
|
||||
// 设置格式
|
||||
if format == "text" {
|
||||
writer = zerolog.ConsoleWriter{Out: writer}
|
||||
}
|
||||
|
||||
Logger = zerolog.New(writer).With().Timestamp().Logger()
|
||||
log.Logger = Logger
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// WithFields 创建带字段的日志
|
||||
func WithFields(fields map[string]interface{}) *zerolog.Event {
|
||||
event := Logger.Info()
|
||||
for k, v := range fields {
|
||||
switch val := v.(type) {
|
||||
case string:
|
||||
event = event.Str(k, val)
|
||||
case int:
|
||||
event = event.Int(k, val)
|
||||
case int64:
|
||||
event = event.Int64(k, val)
|
||||
case bool:
|
||||
event = event.Bool(k, val)
|
||||
default:
|
||||
event = event.Interface(k, val)
|
||||
}
|
||||
}
|
||||
return event
|
||||
}
|
||||
Reference in New Issue
Block a user