@@ -2,22 +2,101 @@ package logger
2
2
3
3
import (
4
4
"github.com/natefinch/lumberjack"
5
- "github.com/reggiepy/LogBeetle/pkg/config"
6
5
"go.uber.org/zap"
7
6
"go.uber.org/zap/zapcore"
8
7
)
9
8
10
9
var Logger * zap.Logger
11
10
11
+ type Config struct {
12
+ LogFile string `json:"LogFile" yaml:"LogFile"` // 日志文件名
13
+ MaxSize int `json:"MaxSize" yaml:"MaxSize"` // 日志文件大小限制,单位为 MB
14
+ MaxBackups int `json:"MaxBackups" yaml:"MaxBackups"` // 最大保留的旧日志文件数量
15
+ MaxAge int `json:"MaxAge" yaml:"MaxAge"` // 旧日志文件保留天数
16
+ Compress bool `json:"Compress" yaml:"Compress"` // 是否压缩旧日志文件
17
+ LogLevel string `json:"LogLevel" yaml:"LogLevel"` // 日志等级
18
+ LogFormat string `json:"LogFormat" yaml:"LogFormat"` // 日志等级
19
+ }
20
+
21
+ type ConfigOption func (loggerConfig * Config ) error
22
+
23
+ // WithLogFile 设置日志文件名
24
+ func WithLogFile (logFile string ) ConfigOption {
25
+ return func (loggerConfig * Config ) error {
26
+ loggerConfig .LogFile = logFile
27
+ return nil
28
+ }
29
+ }
30
+
31
+ // WithMaxSize 设置日志文件大小限制,单位为 MB
32
+ func WithMaxSize (maxSize int ) ConfigOption {
33
+ return func (loggerConfig * Config ) error {
34
+ loggerConfig .MaxSize = maxSize
35
+ return nil
36
+ }
37
+ }
38
+
39
+ // WithMaxBackups 设置最大保留的旧日志文件数量
40
+ func WithMaxBackups (maxBackups int ) ConfigOption {
41
+ return func (loggerConfig * Config ) error {
42
+ loggerConfig .MaxBackups = maxBackups
43
+ return nil
44
+ }
45
+ }
46
+
47
+ // WithMaxAge 设置旧日志文件保留天数
48
+ func WithMaxAge (maxAge int ) ConfigOption {
49
+ return func (loggerConfig * Config ) error {
50
+ loggerConfig .MaxAge = maxAge
51
+ return nil
52
+ }
53
+ }
54
+
55
+ // WithCompress 设置是否压缩旧日志文件
56
+ func WithCompress (compress bool ) ConfigOption {
57
+ return func (loggerConfig * Config ) error {
58
+ loggerConfig .Compress = compress
59
+ return nil
60
+ }
61
+ }
62
+
63
+ // WithLogLevel 设置日志等级
64
+ func WithLogLevel (logLevel string ) ConfigOption {
65
+ return func (loggerConfig * Config ) error {
66
+ loggerConfig .LogLevel = logLevel
67
+ return nil
68
+ }
69
+ }
70
+
71
+ // WithLogFormat 设置日志格式
72
+ func WithLogFormat (logFormat string ) ConfigOption {
73
+ return func (loggerConfig * Config ) error {
74
+ loggerConfig .LogFormat = logFormat
75
+ return nil
76
+ }
77
+ }
78
+
79
+ // NewDefaultConfig 创建默认配置
80
+ func NewDefaultConfig () * Config {
81
+ return & Config {
82
+ LogFile : "app.log" ,
83
+ MaxSize : 1 ,
84
+ MaxBackups : 5 ,
85
+ MaxAge : 30 ,
86
+ Compress : false ,
87
+ LogLevel : "info" ,
88
+ LogFormat : "json" ,
89
+ }
90
+ }
91
+
12
92
// InitLogger 初始化Logger
13
- func InitLogger (cfg * config. Config ) (err error ) {
93
+ func InitLogger (logConfig Config , options ... ConfigOption ) (err error ) {
14
94
logLevel := map [string ]zapcore.Level {
15
95
"debug" : zapcore .DebugLevel ,
16
96
"info" : zapcore .InfoLevel ,
17
97
"warn" : zapcore .WarnLevel ,
18
98
"error" : zapcore .ErrorLevel ,
19
99
}
20
- logConfig := cfg .LogConfig
21
100
writeSyncer := getLogWriter (logConfig .LogFile , logConfig .MaxSize , logConfig .MaxBackups , logConfig .MaxAge , logConfig .Compress )
22
101
23
102
logFormats := []string {"json" , "logfmt" }
0 commit comments