@@ -3,13 +3,13 @@ package zapx
33import (
44 "fmt"
55 "github.com/muxi-Infra/muxi-micro/pkg/logger"
6+ "github.com/muxi-Infra/muxi-micro/static"
67 "go.uber.org/zap"
78 "go.uber.org/zap/zapcore"
89 "gopkg.in/natefinch/lumberjack.v2"
910 "log"
1011 "os"
1112 "path/filepath"
12- "strings"
1313)
1414
1515type ZapLogger struct { l * zap.Logger }
@@ -21,7 +21,7 @@ type ZapCfg struct {
2121 options []zap.Option
2222}
2323
24- func NewDefaultZapLogger (logDir string , env logger .Env ) logger.Logger {
24+ func NewDefaultZapLogger (logDir string , env static .Env ) logger.Logger {
2525 return NewZapLogger (
2626 WithDefaultZapCore (
2727 WithLogDir (logDir ),
@@ -45,23 +45,16 @@ func NewZapLogger(opts ...ZapOption) logger.Logger {
4545type CoreOption func (* coreCfg )
4646
4747type coreCfg struct {
48- env logger.Env
49- splitByLevel bool
50- logDir string
48+ env static.Env
49+ logDir string
5150}
5251
53- func WithCoreEnv (env logger .Env ) CoreOption {
52+ func WithCoreEnv (env static .Env ) CoreOption {
5453 return func (cfg * coreCfg ) {
5554 cfg .env = env
5655 }
5756}
5857
59- func WithCoreSplit (splitByLevel bool ) CoreOption {
60- return func (cfg * coreCfg ) {
61- cfg .splitByLevel = splitByLevel
62- }
63- }
64-
6558func WithLogDir (logDir string ) CoreOption {
6659 return func (cfg * coreCfg ) {
6760 cfg .logDir = logDir
@@ -71,16 +64,15 @@ func WithLogDir(logDir string) CoreOption {
7164func WithDefaultZapCore (opts ... CoreOption ) ZapOption {
7265 return func (cfg * ZapCfg ) {
7366 var corecfg = coreCfg {
74- splitByLevel : false ,
75- logDir : "./logs" ,
76- env : logger .EnvProd ,
67+ logDir : "./logs" ,
68+ env : static .EnvProd ,
7769 }
7870
7971 for _ , opt := range opts {
8072 opt (& corecfg )
8173 }
8274 // dev 只需要 stdout,不强制创建 logDir
83- if corecfg .env != logger .EnvDev {
75+ if corecfg .env != static .EnvDev {
8476 corecfg .logDir = filepath .Clean (corecfg .logDir )
8577 if err := os .MkdirAll (corecfg .logDir , 0755 ); err != nil {
8678 log .Panicf ("无法创建日志目录: %v" , err )
@@ -92,20 +84,20 @@ func WithDefaultZapCore(opts ...CoreOption) ZapOption {
9284
9385 switch corecfg .env {
9486 // ======== DEV:彩色到控制台 ========
95- case logger .EnvDev :
87+ case static .EnvDev :
9688 cfg .core = zapcore .NewCore (consoleEnc , zapcore .AddSync (os .Stdout ), zapcore .DebugLevel )
9789 return
9890
9991 // ======== TEST:控制台彩色 + 文件 JSON ========
100- case logger .EnvTest :
92+ case static .EnvTest :
10193 consoleCore := zapcore .NewCore (consoleEnc , zapcore .AddSync (os .Stdout ), zapcore .DebugLevel )
102- fileCore := buildFileCores (jsonEnc , corecfg .splitByLevel , corecfg . logDir , false ) // 仅文件
94+ fileCore := buildFileCores (jsonEnc , corecfg .logDir , false ) // 仅文件
10395 cfg .core = zapcore .NewTee (append ([]zapcore.Core {consoleCore }, fileCore ... )... )
10496 return
10597
10698 // ======== PROD(默认):全 JSON 单行 ========
107- case logger .EnvProd :
108- cores := buildFileCores (jsonEnc , corecfg .splitByLevel , corecfg . logDir , true ) // stdout+file 共写
99+ case static .EnvProd :
100+ cores := buildFileCores (jsonEnc , corecfg .logDir , true ) // stdout+file 共写
109101 cfg .core = zapcore .NewTee (cores ... )
110102
111103 default :
@@ -137,36 +129,17 @@ func WithZapCore(core zapcore.Core) ZapOption {
137129}
138130
139131// 构造文件相关 core;如果 withStdout=true,则 stdout 也走同 encoder(生产)
140- func buildFileCores (enc zapcore.Encoder , split bool , dir string , withStdout bool ) []zapcore.Core {
132+ func buildFileCores (enc zapcore.Encoder , dir string , withStdout bool ) []zapcore.Core {
141133 var cores []zapcore.Core
142134 stdout := zapcore .AddSync (os .Stdout )
143135
144- if ! split {
145- var ws zapcore.WriteSyncer
146- if withStdout {
147- ws = zapcore .NewMultiWriteSyncer (stdout , zapcore .AddSync (newRotateLogger (fmt .Sprintf ("%s/app.log" , dir ))))
148- } else {
149- ws = zapcore .AddSync (newRotateLogger (fmt .Sprintf ("%s/app.log" , dir )))
150- }
151- cores = append (cores , zapcore .NewCore (enc , ws , zapcore .DebugLevel ))
152- return cores
153- }
154-
155- levels := []zapcore.Level {
156- zapcore .DebugLevel , zapcore .InfoLevel , zapcore .WarnLevel ,
157- zapcore .ErrorLevel , zapcore .DPanicLevel , zapcore .PanicLevel , zapcore .FatalLevel ,
158- }
159- for _ , lv := range levels {
160- fileWS := zapcore .AddSync (newRotateLogger (fmt .Sprintf ("%s/%s.log" , dir , strings .ToLower (lv .String ()))))
161- var ws zapcore.WriteSyncer
162- if withStdout {
163- ws = zapcore .NewMultiWriteSyncer (stdout , fileWS )
164- } else {
165- ws = fileWS
166- }
167- core := zapcore .NewCore (enc , ws , zap .LevelEnablerFunc (func (l zapcore.Level ) bool { return l == lv }))
168- cores = append (cores , core )
136+ var ws zapcore.WriteSyncer
137+ if withStdout {
138+ ws = zapcore .NewMultiWriteSyncer (stdout , zapcore .AddSync (newRotateLogger (fmt .Sprintf ("%s/app.log" , dir ))))
139+ } else {
140+ ws = zapcore .AddSync (newRotateLogger (fmt .Sprintf ("%s/app.log" , dir )))
169141 }
142+ cores = append (cores , zapcore .NewCore (enc , ws , zapcore .DebugLevel ))
170143 return cores
171144}
172145
@@ -220,8 +193,10 @@ func (z *ZapLogger) Sync() error { return z.l.Sync() }
220193
221194func convert (fields []logger.Field ) []zap.Field {
222195 var res []zap.Field
223- for _ , arg := range fields {
224- res = append (res , zap .Any (arg .Key , arg .Val ))
196+ for _ , f := range fields {
197+ for k , v := range f {
198+ res = append (res , zap .Any (k , v ))
199+ }
225200 }
226201 return res
227202}
0 commit comments