file_rotatelogs.go 897 B

123456789101112131415161718192021222324252627282930
  1. package internal
  2. import (
  3. rotatelogs "github.com/lestrrat-go/file-rotatelogs"
  4. "go.uber.org/zap/zapcore"
  5. "log-server/global"
  6. "os"
  7. "path"
  8. "time"
  9. )
  10. var FileRotatelogs = new(fileRotatelogs)
  11. type fileRotatelogs struct{}
  12. // GetWriteSyncer 获取 zapcore.WriteSyncer
  13. // Author [SliverHorn](https://github.com/SliverHorn)
  14. func (r *fileRotatelogs) GetWriteSyncer(level string) (zapcore.WriteSyncer, error) {
  15. fileWriter, err := rotatelogs.New(
  16. path.Join(global.GVA_CONFIG.Zap.Director, "%Y-%m-%d", level+".log"),
  17. rotatelogs.WithClock(rotatelogs.Local),
  18. rotatelogs.WithMaxAge(time.Duration(global.GVA_CONFIG.Zap.MaxAge)*24*time.Hour), // 日志留存时间
  19. rotatelogs.WithRotationTime(time.Hour*24),
  20. )
  21. if global.GVA_CONFIG.Zap.LogInConsole {
  22. return zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout), zapcore.AddSync(fileWriter)), err
  23. }
  24. return zapcore.AddSync(fileWriter), err
  25. }