log.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package logger
  2. import (
  3. "IotAdmin/core/logger"
  4. "IotAdmin/core/logger/zap"
  5. "IotAdmin/core/sdk/pkg"
  6. "IotAdmin/core/tools/writer"
  7. "io"
  8. "os"
  9. log "IotAdmin/core/logger"
  10. )
  11. // SetupLogger 日志 cap 单位为kb
  12. func SetupLogger(opts ...Option) logger.Logger {
  13. op := setDefault()
  14. for _, o := range opts {
  15. o(&op)
  16. }
  17. if !pkg.PathExist(op.path) {
  18. err := pkg.PathCreate(op.path)
  19. if err != nil {
  20. log.Fatalf("create dir error: %s", err.Error())
  21. }
  22. }
  23. var err error
  24. var output io.Writer
  25. switch op.stdout {
  26. case "file":
  27. output, err = writer.NewFileWriter(
  28. writer.WithPath(op.path),
  29. writer.WithCap(op.cap<<10),
  30. )
  31. if err != nil {
  32. log.Fatalf("logger setup error: %s", err.Error())
  33. }
  34. default:
  35. output = os.Stdout
  36. }
  37. var level logger.Level
  38. level, err = logger.GetLevel(op.level)
  39. if err != nil {
  40. log.Fatalf("get logger level error, %s", err.Error())
  41. }
  42. switch op.driver {
  43. case "zap":
  44. log.DefaultLogger, err = zap.NewLogger(logger.WithLevel(level), zap.WithOutput(output), zap.WithCallerSkip(2))
  45. if err != nil {
  46. log.Fatalf("new zap logger error, %s", err.Error())
  47. }
  48. default:
  49. log.DefaultLogger = logger.NewLogger(logger.WithLevel(level), logger.WithOutput(output))
  50. }
  51. return log.DefaultLogger
  52. }