diff --git a/config.go b/config.go index f2e096b..198add3 100644 --- a/config.go +++ b/config.go @@ -9,14 +9,13 @@ package logger import ( "fmt" + "github.com/gin-gonic/gin" "os" "path/filepath" "strings" "time" "git.zhangdeman.cn/zhangdeman/consts" - "git.zhangdeman.cn/zhangdeman/websocket/storage" - "go.uber.org/zap/zapcore" ) @@ -224,19 +223,22 @@ func defaultEncodeDuration(d time.Duration, enc zapcore.PrimitiveArrayEncoder) { // // Date : 11:41 下午 2021/1/2 type OptionLogger struct { - UseJsonFormat bool // 日志使用json格式 - MessageKey string // message 字段 - LevelKey string // level 字段 - TimeKey string // 时间字段 - CallerKey string // 记录日志的文件的代码行数 - UseShortCaller bool // 使用短的调用文件格式 - TimeEncoder zapcore.TimeEncoder // 格式化时间的函数 - EncodeDuration zapcore.DurationEncoder // 原始时间信息 - WithCaller bool // 是否打印文件行号 - WithCallerSkip int // 跳过的调用数 - ConsoleOutput bool // 控制台输出 - Encoder zapcore.Encoder // 编码函数 - WsLoggerConnect storage.IConnection `json:"-"` // ws 日志连接管理实例 + UseJsonFormat bool // 日志使用json格式 + MessageKey string // message 字段 + LevelKey string // level 字段 + TimeKey string // 时间字段 + CallerKey string // 记录日志的文件的代码行数 + UseShortCaller bool // 使用短的调用文件格式 + TimeEncoder zapcore.TimeEncoder // 格式化时间的函数 + EncodeDuration zapcore.DurationEncoder // 原始时间信息 + WithCaller bool // 是否打印文件行号 + WithCallerSkip int // 跳过的调用数 + ConsoleOutput bool // 控制台输出 + Encoder zapcore.Encoder // 编码函数 + WsServerProt int // ws端口 + WsGroup string // ws分组 + GinRouter *gin.Engine // gin路由实例 + EnableWsLog bool // 启用wsLog } // SetLoggerOptionFunc 设置日志配置 @@ -417,3 +419,16 @@ func GetEncoder(option ...SetLoggerOptionFunc) zapcore.Encoder { } return zapcore.NewJSONEncoder(ec) } + +// EnableWsLogger 启用wsLogger +func EnableWsLogger(serverPort int, wsGroup string, router *gin.Engine) SetLoggerOptionFunc { + return func(o *OptionLogger) { + o.GinRouter = router + o.WsServerProt = serverPort + if len(wsGroup) == 0 { + wsGroup = "ws-log" + } + o.WsGroup = wsGroup + o.EnableWsLog = true + } +} diff --git a/logger.go b/logger.go index cbefa13..b2806b8 100644 --- a/logger.go +++ b/logger.go @@ -64,12 +64,14 @@ func NewLogger(inputLoggerLevel consts.LogLevel, splitConfig *RotateLogConfig, o // zapcore.NewCore(o.Encoder, zapcore.AddSync(&wsWriter{}), loggerLevelDeal), // 设置ws日志输出 } - // TODO: 通过配置控制ws logger - if wsLoggerInstance, err := instance.NewWebsocketLog(80, nil); nil != err { - return nil, err - } else { - // 设置ws日志输出 - fileHandlerList = append(fileHandlerList, zapcore.NewCore(o.Encoder, zapcore.AddSync(wsLoggerInstance.Writer()), loggerLevelDeal)) + // 通过配置控制ws logger + if o.EnableWsLog { + if wsLoggerInstance, err := instance.NewWebsocketLog(o.WsServerProt, o.GinRouter); nil != err { + return nil, err + } else { + // 设置ws日志输出 + fileHandlerList = append(fileHandlerList, zapcore.NewCore(o.Encoder, zapcore.AddSync(wsLoggerInstance.Writer()), loggerLevelDeal)) + } } // 设置控制台输出