123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- package logrus
- import (
- "fmt"
- "kpt-tmr-group/pkg/tool"
- "path"
- "runtime"
- "time"
- rotatelogs "github.com/lestrrat-go/file-rotatelogs"
- "github.com/sirupsen/logrus"
- )
- var (
- logPath = "./logger"
- logFileName = fmt.Sprintf("/logrus-%s.log", time.Now().Format(tool.DateTime))
- )
- func init() {
- // Log as JSON instead of the default ASCII formatter.
- logrus.SetFormatter(&logrus.JSONFormatter{
- CallerPrettyfier: func(f *runtime.Frame) (string, string) {
- filename := path.Base(f.File)
- return fmt.Sprintf("%s()", f.Function), fmt.Sprintf("%s:%d", filename, f.Line)
- },
- })
- // Output to stdout instead of the default stderr
- // Can be any io.Writer, see below for File example
- writer, _ := rotatelogs.New(
- fmt.Sprintf("%s%s", logPath, logFileName),
- // rotatelogs.WithLinkName(logPath),
- rotatelogs.WithMaxAge(time.Duration(7*24)*time.Hour), // 备份7天的日志
- rotatelogs.WithRotationTime(time.Duration(24)*time.Hour), // 24小时切割一次日志
- )
- logrus.SetOutput(writer) // logrus 设置日志的输出方式
- // Only log the warning severity or above.
- logrus.SetLevel(DebugLevel)
- }
- // These are the different logging levels. You can set the logging level to log
- // on your instance of logger, obtained with `logrus.New()`.
- const (
- // PanicLevel level, highest level of severity. Logs and then calls panic with the
- // message passed to Debug, Info, ...
- PanicLevel Level = iota
- // FatalLevel level. Logs and then calls `logger.Exit(1)`. It will exit even if the
- // logging level is set to Panic.
- FatalLevel
- // ErrorLevel level. Logs. Used for errors that should definitely be noted.
- // Commonly used for hooks to send errors to an error tracking service.
- ErrorLevel
- // WarnLevel level. Non-critical entries that deserve eyes.
- WarnLevel
- // InfoLevel level. General operational entries about what's going on inside the
- // application.
- InfoLevel
- // DebugLevel level. Usually only enabled when debugging. Very verbose logging.
- DebugLevel
- // TraceLevel level. Designates finer-grained informational events than the Debug.
- TraceLevel
- )
- // Entry is the final or intermediate Logrus logging entry. It contains all
- // the fields passed with WithField{,s}. It's finally logged when Debug, Info,
- // Warn, Error, Fatal or Panic is called on it. These objects can be reused and
- // passed around as much as you wish to avoid field duplication.
- type Entry = logrus.Entry
- // Fields type, used to pass to `WithFields`.
- type Fields = logrus.Fields
- // FieldMap allows customization of the key names for default fields.
- type FieldMap = logrus.FieldMap
- // Level type
- type Level = logrus.Level
- // Logger type
- type Logger = logrus.Logger
- // JSONFormatter formats logs into parsable json
- type JSONFormatter struct {
- logrus.JSONFormatter
- }
- // TextFormatter formats logs into text
- type TextFormatter struct {
- logrus.TextFormatter
- }
- // Formatter
- // The Formatter interface is used to implement a custom Formatter. It takes an
- // `Entry`. It exposes all the fields, including the default ones:
- //
- // * `entry.Data["msg"]`. The message passed from Info, Warn, Error ..
- // * `entry.Data["time"]`. The timestamp.
- // * `entry.Data["level"]. The level the entry was logged at.
- //
- // Any additional fields added with `WithField` or `WithFields` are also in
- // `entry.Data`. Format is expected to return an array of bytes which are then
- // logged to `logger.Out`.
- // SetLevel ...
- func SetLevel(level Level) {
- logrus.SetLevel(level)
- }
- // NewWithFields returns a logrus Entry with fields
- func NewWithFields(fields Fields) *Entry {
- return logrus.WithFields(fields)
- }
- // NewEntry return an entry is the final or intermediate Logrus logging entry
- func NewEntry(logger *Logger) *Entry {
- return logrus.NewEntry(logger)
- }
- // Exported from logrus
- var (
- // Creates a new logger. Configuration should be set by changing `Formatter`,
- // `Out` and `Hooks` directly on the default logger instance. You can also just
- // instantiate your own:
- //
- // var log = &Logger{
- // Out: os.Stderr,
- // Formatter: new(JSONFormatter),
- // Level: logrus.DebugLevel,
- // }
- //
- // It's recommended to make this a global instance called `log`.
- New = logrus.New
- // StandardLogger default logger
- StandardLogger = logrus.StandardLogger
- // SetOutput sets the standard logger output.
- SetOutput = logrus.SetOutput
- // SetFormatter sets the standard logger formatter.
- SetFormatter = logrus.SetFormatter
- // WithError creates an entry from the standard logger and adds an error to it, using the value defined in ErrorKey as key.
- WithError = logrus.WithError
- // WithField creates an entry from the standard logger and adds a field to
- // it. If you want multiple fields, use `WithFields`.
- //
- // Note that it doesn't log until you call Debug, Print, Info, Warn, Fatal
- // or Panic on the Entry it returns.
- WithField = logrus.WithField
- // WithFields creates an entry from the standard logger and adds multiple
- // fields to it. This is simply a helper for `WithField`, invoking it
- // once for each field.
- //
- // Note that it doesn't log until you call Debug, Print, Info, Warn, Fatal
- // or Panic on the Entry it returns.
- WithFields = logrus.WithFields
- // Debug logs a message at level Debug on the standard logger.
- Debug = logrus.Debug
- // Print logs a message at level Info on the standard logger.
- Print = logrus.Print
- // Info logs a message at level Info on the standard logger.
- Info = logrus.Info
- // Warn logs a message at level Warn on the standard logger.
- Warn = logrus.Warn
- // Warning logs a message at level Warn on the standard logger.
- Warning = logrus.Warning
- // Error logs a message at level Error on the standard logger.
- Error = logrus.Error
- // Panic logs a message at level Panic on the standard logger.
- Panic = logrus.Panic
- // Fatal logs a message at level Fatal on the standard logger.
- Fatal = logrus.Fatal
- // Debugf logs a message at level Debug on the standard logger.
- Debugf = logrus.Debugf
- // Printf logs a message at level Info on the standard logger.
- Printf = logrus.Printf
- // Infof logs a message at level Info on the standard logger.
- Infof = logrus.Infof
- // Warnf logs a message at level Warn on the standard logger.
- Warnf = logrus.Warnf
- // Warningf logs a message at level Warn on the standard logger.
- Warningf = logrus.Warningf
- // Errorf logs a message at level Error on the standard logger.
- Errorf = logrus.Errorf
- // Panicf logs a message at level Panic on the standard logger.
- Panicf = logrus.Panicf
- // Fatalf logs a message at level Fatal on the standard logger.
- Fatalf = logrus.Fatalf
- // Debugln logs a message at level Debug on the standard logger.
- Debugln = logrus.Debugln
- // Println logs a message at level Info on the standard logger.
- Println = logrus.Println
- // Infoln logs a message at level Info on the standard logger.
- Infoln = logrus.Infoln
- // Warnln logs a message at level Warn on the standard logger.
- Warnln = logrus.Warnln
- // Warningln logs a message at level Warn on the standard logger.
- Warningln = logrus.Warningln
- // Errorln logs a message at level Error on the standard logger.
- Errorln = logrus.Errorln
- // Panicln logs a message at level Panic on the standard logger.
- Panicln = logrus.Panicln
- // Fatalln logs a message at level Fatal on the standard logger.
- Fatalln = logrus.Fatalln
- )
|