logger.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "time"
  6. "github.com/sirupsen/logrus"
  7. )
  8. var (
  9. log *logrus.Logger
  10. )
  11. func setupLogger() {
  12. log = logrus.New()
  13. // Handle logfile
  14. if *logFile == "" {
  15. log.SetOutput(os.Stderr)
  16. } else {
  17. writer, err := os.OpenFile(*logFile, os.O_CREATE|os.O_RDWR|os.O_APPEND, 0600)
  18. if err != nil {
  19. fmt.Printf("cannot open log file: %s\n", err)
  20. os.Exit(1)
  21. }
  22. log.SetOutput(writer)
  23. }
  24. // Handle log_format
  25. switch *logFormat {
  26. case "json":
  27. log.SetFormatter(&logrus.JSONFormatter{
  28. TimestampFormat: time.RFC3339Nano,
  29. DisableHTMLEscape: true,
  30. })
  31. case "plain":
  32. log.SetFormatter(&logrus.TextFormatter{
  33. DisableTimestamp: true,
  34. })
  35. case "", "default":
  36. log.SetFormatter(&logrus.TextFormatter{
  37. FullTimestamp: true,
  38. })
  39. default:
  40. fmt.Fprintf(os.Stderr, "Invalid log_format: %s\n", *logFormat)
  41. os.Exit(1)
  42. }
  43. // Handle log_level
  44. level, err := logrus.ParseLevel(*logLevel)
  45. if err != nil {
  46. level = logrus.InfoLevel
  47. log.WithField("given_level", *logLevel).
  48. Warn("could not parse log level, defaulting to 'info'")
  49. }
  50. log.SetLevel(level)
  51. }