golang日志

一、使用默认的logger

package log

import (
    "threat-collector/config"

    "github.com/sirupsen/logrus"
)

var (
    logLevel = config.GlobalConfig.Log.LogLevel
)

// LoggerConfig is the configuration of the logger.
type LoggerConfig struct {
    Level        string
    EnableCaller bool
    Format       string
}

// InitLogger init logrus logger.
func InitLogger() {
    // 设定 text 格式,减少性能消耗
    logrus.SetFormatter(&logrus.TextFormatter{})
    logrus.SetReportCaller(true)
    // 从配置文件中获得 log level
    level, err := logrus.ParseLevel(logLevel)
    if err != nil {
        panic(err)
    }
    logrus.SetLevel(level)
}

// Logger returns the default logger.
func Logger(service string) *logrus.Entry {
    return logrus.WithField("service", service)
}

说明:

1.没有定义Logger,因此使用的是logrus的默认Logger。

2.没有输出到文件。但是通过docker部署,可以通过docker来获取日志信息。

默认情况下,日志输出到io.Stderr。可以调用logrus.SetOutput传入一个io.Writer参数。后续调用相关方法日志将写到io.Writer中。现在,我们就能像上篇文章介绍log时一样,可以搞点事情了。传入一个io.MultiWriter,同时将日志写到bytes.Buffer、标准输出和文件中:

  writer1 := &bytes.Buffer{}
  writer2 := os.Stdout
  writer3, err := os.OpenFile("log.txt", os.O_WRONLY|os.O_CREATE, 0755)
  if err != nil {
    log.Fatalf("create file log.txt failed: %v", err)
  }

  logrus.SetOutput(io.MultiWriter(writer1, writer2, writer3))

3.使用:

logger = logutil.Logger("main")
logger = logutil.Logger("core")

 

posted on 2021-11-08 14:12  myworldworld  阅读(286)  评论(0)    收藏  举报

导航