utils.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package types
  2. import (
  3. "fmt"
  4. "path/filepath"
  5. "time"
  6. log "github.com/sirupsen/logrus"
  7. "gopkg.in/natefinch/lumberjack.v2"
  8. )
  9. var logFormatter log.Formatter
  10. var LogOutput *lumberjack.Logger //io.Writer
  11. var logLevel log.Level
  12. func SetDefaultLoggerConfig(cfgMode string, cfgFolder string, cfgLevel log.Level, maxSize int, maxFiles int, maxAge int, compress *bool, forceColors bool) error {
  13. /*Configure logs*/
  14. if cfgMode == "file" {
  15. _maxsize := 500
  16. if maxSize != 0 {
  17. _maxsize = maxSize
  18. }
  19. _maxfiles := 3
  20. if maxFiles != 0 {
  21. _maxfiles = maxFiles
  22. }
  23. _maxage := 28
  24. if maxAge != 0 {
  25. _maxage = maxAge
  26. }
  27. _compress := true
  28. if compress != nil {
  29. _compress = *compress
  30. }
  31. LogOutput = &lumberjack.Logger{
  32. Filename: filepath.Join(cfgFolder, "crowdsec.log"),
  33. MaxSize: _maxsize,
  34. MaxBackups: _maxfiles,
  35. MaxAge: _maxage,
  36. Compress: _compress,
  37. }
  38. log.SetOutput(LogOutput)
  39. } else if cfgMode != "stdout" {
  40. return fmt.Errorf("log mode '%s' unknown", cfgMode)
  41. }
  42. logLevel = cfgLevel
  43. log.SetLevel(logLevel)
  44. logFormatter = &log.TextFormatter{TimestampFormat: time.RFC3339, FullTimestamp: true, ForceColors: forceColors}
  45. log.SetFormatter(logFormatter)
  46. return nil
  47. }
  48. func ConfigureLogger(clog *log.Logger) error {
  49. /*Configure logs*/
  50. if LogOutput != nil {
  51. clog.SetOutput(LogOutput)
  52. }
  53. if logFormatter != nil {
  54. clog.SetFormatter(logFormatter)
  55. }
  56. clog.SetLevel(logLevel)
  57. return nil
  58. }
  59. func UtcNow() time.Time {
  60. return time.Now().UTC()
  61. }