|
|
|
@ -8,8 +8,7 @@ import (
|
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type App struct {
|
|
|
|
|
Logger *zap.Logger
|
|
|
|
|
type ConfigGoLog struct {
|
|
|
|
|
LogPath string // 日志文件路径
|
|
|
|
|
LogName string // 日志文件名
|
|
|
|
|
LogLevel string // 日志级别 debug/info/warn/error,debug输出:debug/info/warn/error日志。 info输出:info/warn/error日志。 warn输出:warn/error日志。 error输出:error日志。
|
|
|
|
@ -22,11 +21,27 @@ type App struct {
|
|
|
|
|
LogInConsole bool // 是否同时输出到控制台
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (app *App) InitLogger() {
|
|
|
|
|
type GoLog struct {
|
|
|
|
|
ConfigGoLog
|
|
|
|
|
Logger *zap.Logger
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func NewGoLog(config *ConfigGoLog) *GoLog {
|
|
|
|
|
g := &GoLog{}
|
|
|
|
|
g.LogPath = config.LogPath
|
|
|
|
|
g.LogName = config.LogName
|
|
|
|
|
g.LogLevel = config.LogLevel
|
|
|
|
|
g.MaxSize = config.MaxSize
|
|
|
|
|
g.MaxBackups = config.MaxBackups
|
|
|
|
|
g.MaxAge = config.MaxAge
|
|
|
|
|
g.Compress = config.Compress
|
|
|
|
|
g.JsonFormat = config.JsonFormat
|
|
|
|
|
g.ShowLine = config.ShowLine
|
|
|
|
|
g.LogInConsole = config.LogInConsole
|
|
|
|
|
|
|
|
|
|
// 设置日志级别
|
|
|
|
|
var level zapcore.Level
|
|
|
|
|
switch app.LogLevel {
|
|
|
|
|
switch g.LogLevel {
|
|
|
|
|
case "debug":
|
|
|
|
|
level = zap.DebugLevel
|
|
|
|
|
case "info":
|
|
|
|
@ -55,17 +70,17 @@ func (app *App) InitLogger() {
|
|
|
|
|
|
|
|
|
|
// 定义日志切割配置
|
|
|
|
|
hook := lumberjack.Logger{
|
|
|
|
|
Filename: app.LogPath + app.LogName, // 日志文件的位置
|
|
|
|
|
MaxSize: app.MaxSize, // 在进行切割之前,日志文件的最大大小(以MB为单位)
|
|
|
|
|
MaxBackups: app.MaxBackups, // 保留旧文件的最大个数
|
|
|
|
|
Compress: app.Compress, // 是否压缩 disabled by default
|
|
|
|
|
Filename: g.LogPath + g.LogName, // 日志文件的位置
|
|
|
|
|
MaxSize: g.MaxSize, // 在进行切割之前,日志文件的最大大小(以MB为单位)
|
|
|
|
|
MaxBackups: g.MaxBackups, // 保留旧文件的最大个数
|
|
|
|
|
Compress: g.Compress, // 是否压缩 disabled by default
|
|
|
|
|
}
|
|
|
|
|
if app.MaxAge > 0 {
|
|
|
|
|
hook.MaxAge = app.MaxAge // days
|
|
|
|
|
if g.MaxAge > 0 {
|
|
|
|
|
hook.MaxAge = g.MaxAge // days
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 判断是否控制台输出日志
|
|
|
|
|
if app.LogInConsole {
|
|
|
|
|
if g.LogInConsole {
|
|
|
|
|
syncer = zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout), zapcore.AddSync(&hook))
|
|
|
|
|
} else {
|
|
|
|
|
syncer = zapcore.AddSync(&hook)
|
|
|
|
@ -89,7 +104,7 @@ func (app *App) InitLogger() {
|
|
|
|
|
|
|
|
|
|
var encoder zapcore.Encoder
|
|
|
|
|
// 判断是否json格式输出
|
|
|
|
|
if app.JsonFormat {
|
|
|
|
|
if g.JsonFormat {
|
|
|
|
|
encoder = zapcore.NewJSONEncoder(encoderConfig)
|
|
|
|
|
} else {
|
|
|
|
|
encoder = zapcore.NewConsoleEncoder(encoderConfig)
|
|
|
|
@ -101,10 +116,12 @@ func (app *App) InitLogger() {
|
|
|
|
|
level,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
app.Logger = zap.New(core)
|
|
|
|
|
g.Logger = zap.New(core)
|
|
|
|
|
|
|
|
|
|
// 判断是否显示代码行号
|
|
|
|
|
if app.ShowLine {
|
|
|
|
|
app.Logger = app.Logger.WithOptions(zap.AddCaller())
|
|
|
|
|
if g.ShowLine {
|
|
|
|
|
g.Logger = g.Logger.WithOptions(zap.AddCaller())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return g
|
|
|
|
|
}
|
|
|
|
|