log.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package fslog
  2. import (
  3. "go.uber.org/zap"
  4. "go.uber.org/zap/zapcore"
  5. "gopkg.in/natefinch/lumberjack.v2"
  6. "io"
  7. "os"
  8. )
  9. var log *Logger
  10. func init() {
  11. consoleCfg := zap.NewDevelopmentEncoderConfig()
  12. consoleCfg.EncodeTime = zapcore.TimeEncoderOfLayout("2006-01-02 15:04:05")
  13. jsonCfg := zap.NewProductionEncoderConfig()
  14. jsonCfg.EncodeTime = zapcore.TimeEncoderOfLayout("2006-01-02 15:04:05")
  15. log = &Logger{
  16. lv: zap.NewAtomicLevelAt(zap.DebugLevel),
  17. loggerConfig: &loggerConfig{SkipCaller: 2},
  18. }
  19. log.cores = append(log.cores,
  20. zapcore.NewCore(zapcore.NewConsoleEncoder(consoleCfg), zapcore.AddSync(os.Stdout), log.lv),
  21. zapcore.NewCore(zapcore.NewJSONEncoder(jsonCfg), zapcore.AddSync(&lumberjack.Logger{
  22. Filename: "logs/log",
  23. MaxSize: 1,
  24. MaxAge: 10,
  25. LocalTime: true,
  26. }), log.lv),
  27. )
  28. log.flushLogger()
  29. }
  30. // With 见 Logger.With
  31. func With(k string, v any) *Logger {
  32. return log.With(k, v)
  33. }
  34. // Info 见 Logger.Info
  35. func Info(msg string, vs ...any) *Logger {
  36. log.Info(msg, vs...)
  37. return log
  38. }
  39. // Debug 见 Logger.Debug
  40. func Debug(msg string, vs ...any) *Logger {
  41. log.Debug(msg, vs...)
  42. return log
  43. }
  44. // Warn 见 Logger.Warn
  45. func Warn(msg string, vs ...any) *Logger {
  46. log.Warn(msg, vs...)
  47. return log
  48. }
  49. // Error 见 Logger.Error
  50. func Error(vs ...any) *Logger {
  51. log.Error(vs...)
  52. return log
  53. }
  54. // Lv 见 Logger.Lv
  55. func Lv() Level {
  56. return log.Lv()
  57. }
  58. // SetLv 见 Logger.SetLv
  59. func SetLv(lv Level) *Logger {
  60. log.SetLv(lv)
  61. return log
  62. }
  63. // NewFileOutput 见 Logger.NewFileOutput
  64. func NewFileOutput(opts ...FileOutputOpt) *Logger {
  65. log.NewFileOutput(opts...)
  66. return log
  67. }
  68. // NewOutput 见 Logger.NewOutput
  69. func NewOutput(writer io.Writer) *Logger {
  70. log.NewOutput(writer)
  71. return log
  72. }
  73. // SetLogger 替换fslog包默认的log对象
  74. // Logger 支持了zapcore级别的底层配置,见 Logger
  75. func SetLogger(logger *Logger) *Logger {
  76. log = logger
  77. return log
  78. }
  79. // Flush 见 Logger.Flush
  80. func Flush() {
  81. log.Flush()
  82. }