Skip to content

Commit e8257e9

Browse files
committed
通用化配置logger
1 parent c144dbd commit e8257e9

File tree

1 file changed

+82
-3
lines changed

1 file changed

+82
-3
lines changed

pkg/logger/logger.go

+82-3
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,101 @@ package logger
22

33
import (
44
"github.com/natefinch/lumberjack"
5-
"github.com/reggiepy/LogBeetle/pkg/config"
65
"go.uber.org/zap"
76
"go.uber.org/zap/zapcore"
87
)
98

109
var Logger *zap.Logger
1110

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+
1292
// InitLogger 初始化Logger
13-
func InitLogger(cfg *config.Config) (err error) {
93+
func InitLogger(logConfig Config, options ...ConfigOption) (err error) {
1494
logLevel := map[string]zapcore.Level{
1595
"debug": zapcore.DebugLevel,
1696
"info": zapcore.InfoLevel,
1797
"warn": zapcore.WarnLevel,
1898
"error": zapcore.ErrorLevel,
1999
}
20-
logConfig := cfg.LogConfig
21100
writeSyncer := getLogWriter(logConfig.LogFile, logConfig.MaxSize, logConfig.MaxBackups, logConfig.MaxAge, logConfig.Compress)
22101

23102
logFormats := []string{"json", "logfmt"}

0 commit comments

Comments
 (0)