From fb82fcbdbd30175c87226d6a9f54bfd38fe6437f Mon Sep 17 00:00:00 2001 From: "yunfei.liu" Date: Wed, 8 May 2024 20:58:09 +0800 Subject: [PATCH] log roration --- config/config.go | 13 ++++++++----- config/types.go | 16 ++++++++++------ go.mod | 1 + go.sum | 2 ++ 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/config/config.go b/config/config.go index bf921e62..7f61a7b9 100644 --- a/config/config.go +++ b/config/config.go @@ -14,13 +14,14 @@ import ( "github.com/yaoapp/kun/exception" "github.com/yaoapp/kun/log" "github.com/yaoapp/yao/crypto" + "gopkg.in/natefinch/lumberjack.v2" ) // Conf 配置参数 var Conf Config // LogOutput 日志输出 -var LogOutput *os.File // 日志文件 +var LogOutput io.WriteCloser // 日志文件 // DSLExtensions the dsl file Extensions var DSLExtensions = []string{"*.yao", "*.json", "*.jsonc"} @@ -160,10 +161,12 @@ func OpenLog() { return } } - LogOutput, err = os.OpenFile(logfile, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644) - if err != nil { - log.With(log.F{"file": logfile}).Error(err.Error()) - return + LogOutput = &lumberjack.Logger{ + Filename: logfile, + MaxSize: Conf.LogMaxSize, // megabytes + MaxBackups: Conf.LogMaxBackups, + MaxAge: Conf.LogMaxAage, //days + LocalTime: Conf.LogLocalTime, } log.SetOutput(LogOutput) diff --git a/config/types.go b/config/types.go index dbef1242..bfd22d7e 100644 --- a/config/types.go +++ b/config/types.go @@ -15,12 +15,16 @@ type Config struct { Key string `json:"key,omitempty" env:"YAO_KEY"` // The HTTPS certificate key path Log string `json:"log,omitempty" env:"YAO_LOG"` // The log file path LogMode string `json:"log_mode,omitempty" env:"YAO_LOG_MODE" envDefault:"TEXT"` // The log mode TEXT|JSON - JWTSecret string `json:"jwt_secret,omitempty" env:"YAO_JWT_SECRET"` // The JWT Secret - DB Database `json:"db,omitempty"` // The database config - AllowFrom []string `json:"allowfrom,omitempty" envSeparator:"|" env:"YAO_ALLOW_FROM"` // Domain list the separator is | - Session Session `json:"session,omitempty"` // Session Config - Studio Studio `json:"studio,omitempty"` // Studio config - Runtime Runtime `json:"runtime,omitempty"` // Runtime config + LogMaxSize int `json:"log_max_size,omitempty" env:"YAO_LOG_MAX_SIZE" envDefault:"100"` // The max log size in MB, the default is 100 + LogMaxAage int `json:"log_max_age,omitempty" env:"YAO_LOG_MAX_AGE" envDefault:"7"` // The max log age in day, the default is 7 + LogMaxBackups int `json:"log_max_backups" env:"YAO_LOG_MAX_BACKUPS" envDefault:"3"` // The max log backups, the default is 3 + LogLocalTime bool `json:"log_local_time" env:"YAO_LOG_LOCAL_TIME" envDefault:"true"` + JWTSecret string `json:"jwt_secret,omitempty" env:"YAO_JWT_SECRET"` // The JWT Secret + DB Database `json:"db,omitempty"` // The database config + AllowFrom []string `json:"allowfrom,omitempty" envSeparator:"|" env:"YAO_ALLOW_FROM"` // Domain list the separator is | + Session Session `json:"session,omitempty"` // Session Config + Studio Studio `json:"studio,omitempty"` // Studio config + Runtime Runtime `json:"runtime,omitempty"` // Runtime config } // Studio the studio config diff --git a/go.mod b/go.mod index 39f0ae16..56f65502 100644 --- a/go.mod +++ b/go.mod @@ -29,6 +29,7 @@ require ( golang.org/x/crypto v0.22.0 golang.org/x/net v0.24.0 golang.org/x/text v0.14.0 + gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v3 v3.0.1 rogchap.com/v8go v0.9.0 ) diff --git a/go.sum b/go.sum index 28511df6..d132bfbf 100644 --- a/go.sum +++ b/go.sum @@ -359,6 +359,8 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=