main.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package main
  2. import (
  3. log "github.com/sirupsen/logrus"
  4. "os"
  5. )
  6. // logrus提供了New()函数来创建一个logrus的实例。
  7. // 项目中,可以创建任意数量的logrus实例。
  8. var logger = log.New()
  9. type DefaultFieldHook struct {
  10. }
  11. func NewDefaultFieldHook() (*DefaultFieldHook) {
  12. return &DefaultFieldHook{}
  13. }
  14. func (hook *DefaultFieldHook) Fire(entry *log.Entry) error {
  15. //在所有级别的日志消息中加入默认字段appName="myAppName"
  16. entry.Data["appName"] = "MyAppName"
  17. return nil
  18. }
  19. func (hook *DefaultFieldHook) Levels() []log.Level {
  20. return log.AllLevels
  21. }
  22. func main() {
  23. hook := NewDefaultFieldHook()
  24. logger.Hooks.Add(hook)
  25. // 为当前logrus实例设置消息的输出,同样地,
  26. // 可以设置logrus实例的输出到任意io.writer
  27. logger.Out = os.Stdout
  28. // 为当前logrus实例设置消息输出格式为json格式。
  29. // 同样地,也可以单独为某个logrus实例设置日志级别和hook,这里不详细叙述。
  30. logger.Formatter = &log.JSONFormatter{}
  31. logger.WithFields(log.Fields{
  32. "animal": "walrus",
  33. "size": 10,
  34. }).Info("A group of walrus emerges from the ocean")
  35. }