tidb log 源码
tidb log 代码
文件路径:/dumpling/log/log.go
// Copyright 2020 PingCAP, Inc. Licensed under Apache-2.0.
package log
import (
"github.com/pingcap/errors"
pclog "github.com/pingcap/log"
"go.uber.org/zap"
)
var appLogger = Logger{zap.NewNop()}
// Logger wraps the zap logger.
type Logger struct {
*zap.Logger
}
// Zap returns the global logger.
func Zap() Logger {
return appLogger
}
// Config serializes log related config in toml/json.
type Config struct {
// Log level.
// One of "debug", "info", "warn", "error", "dpanic", "panic", and "fatal".
Level string `toml:"level" json:"level"`
// Log filename, leave empty to disable file log.
File string `toml:"file" json:"file"`
// Max size for a single file, in MB.
FileMaxSize int `toml:"max-size" json:"max-size"`
// Max log keep days, default is never deleting.
FileMaxDays int `toml:"max-days" json:"max-days"`
// Maximum number of old log files to retain.
FileMaxBackups int `toml:"max-backups" json:"max-backups"`
// Format of the log, one of `text`, `json` or `console`.
Format string `toml:"format" json:"format"`
}
// InitAppLogger inits the wrapped logger from config.
func InitAppLogger(cfg *Config) (Logger, *pclog.ZapProperties, error) {
logger, props, err := pclog.InitLogger(&pclog.Config{
Level: cfg.Level,
File: pclog.FileLogConfig{
Filename: cfg.File,
MaxSize: cfg.FileMaxSize,
MaxDays: cfg.FileMaxDays,
MaxBackups: cfg.FileMaxBackups,
},
Format: cfg.Format,
})
if err != nil {
return appLogger, props, errors.Trace(err)
}
return Logger{logger.WithOptions(zap.AddStacktrace(zap.DPanicLevel))}, props, nil
}
// NewAppLogger returns the wrapped logger from config.
func NewAppLogger(logger *zap.Logger) Logger {
return Logger{logger}
}
// ShortError contructs a field which only records the error message without the
// verbose text (i.e. excludes the stack trace).
func ShortError(err error) zap.Field {
if err == nil {
return zap.Skip()
}
return zap.String("error", err.Error())
}
相关信息
相关文章
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦