This commit is contained in:
meixiongfeng 2023-02-01 10:30:09 +08:00
commit 5c4b5ffd0c
5 changed files with 61 additions and 255 deletions

View File

@ -9,10 +9,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -35,10 +31,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -61,10 +53,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -87,10 +75,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -113,10 +97,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -139,10 +119,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -165,10 +141,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -191,10 +163,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -217,10 +185,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -243,10 +207,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -269,10 +229,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -295,10 +251,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -321,10 +273,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -347,10 +295,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -373,10 +317,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -399,10 +339,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -425,10 +361,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -451,10 +383,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -477,10 +405,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -503,10 +427,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -529,10 +449,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -555,10 +471,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -581,10 +493,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -607,10 +515,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -633,10 +537,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -659,10 +559,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -685,10 +581,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -711,10 +603,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -759,10 +647,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -785,10 +669,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -811,10 +691,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -837,10 +713,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -863,10 +735,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -889,10 +757,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -915,10 +779,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -941,10 +801,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -967,10 +823,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -993,10 +845,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -1019,10 +867,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -1045,10 +889,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -1071,10 +911,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -1097,10 +933,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -1123,10 +955,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -1149,10 +977,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -1175,10 +999,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -1201,10 +1021,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -1293,10 +1109,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -1319,10 +1131,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -1345,10 +1153,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -1371,10 +1175,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -1397,10 +1197,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -1423,10 +1219,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -1449,10 +1241,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -1475,10 +1263,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -1501,10 +1285,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -1527,10 +1307,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",
@ -1553,10 +1329,6 @@
{ {
"key": 1, "key": 1,
"param": 1 "param": 1
},
{
"key": 2,
"param": 1100101
} }
], ],
"optional": "", "optional": "",

View File

@ -35,6 +35,7 @@ type LogFileOut struct {
MaxBackups int `json:"maxbackups" yaml:"maxbackups"` //备份日志的最大数量 MaxBackups int `json:"maxbackups" yaml:"maxbackups"` //备份日志的最大数量
LocalTime bool `json:"localtime" yaml:"localtime"` //是使用本地时间还是使用世界标准时间 LocalTime bool `json:"localtime" yaml:"localtime"` //是使用本地时间还是使用世界标准时间
Compress bool `json:"compress" yaml:"compress"` //是否压缩备份日志 Compress bool `json:"compress" yaml:"compress"` //是否压缩备份日志
UniqueLog bool `json:"uniquelog" yaml:"uniquelog"` //是否唯一日志文件
size int64 size int64
ctime time.Time ctime time.Time
file *os.File file *os.File
@ -79,31 +80,42 @@ func (l *LogFileOut) Write(p []byte) (n int, err error) {
return n, err return n, err
} }
func (l *LogFileOut) openExistingOrNew(writeLen int) error { func (this *LogFileOut) openExistingOrNew(writeLen int) error {
l.mill() this.mill()
filename := l.filename() filename := this.filename()
info, err := osStat(filename) info, err := osStat(filename)
if os.IsNotExist(err) { if os.IsNotExist(err) {
return l.openNew() return this.openNew()
} }
if err != nil { if err != nil {
return fmt.Errorf("error getting log file info: %s", err) return fmt.Errorf("error getting log file info: %s", err)
} }
//校验是否需要切割日志 //校验是否需要切割日志
if info.Size()+int64(writeLen) >= l.max() || (!l.ctime.IsZero() && time.Since(l.ctime) > l.CupTime) { if !this.UniqueLog && (info.Size()+int64(writeLen) >= this.max() || (!this.ctime.IsZero() && time.Since(this.ctime) > this.CupTime)) {
return l.rotate() return this.rotate()
} }
mode := os.FileMode(0666)
file, err := os.OpenFile(filename, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0666) if !this.UniqueLog {
if err != nil { file, err := os.OpenFile(filename, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, mode)
// if we fail to open the old log file for some reason, just ignore if err != nil {
// it and open a new log file. // if we fail to open the old log file for some reason, just ignore
return l.openNew() // it and open a new log file.
return this.openNew()
}
this.file = file
this.size = info.Size()
} else {
//最佳写入
f, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, mode)
if err != nil {
return fmt.Errorf("can't open new logfile: %s", err)
}
this.file = f
this.size = 0
this.ctime = currentTime()
} }
l.file = file
l.size = info.Size()
return nil return nil
} }
@ -210,21 +222,21 @@ func (l *LogFileOut) mill() {
} }
//备份老的日志文件创建新的日志文件 //备份老的日志文件创建新的日志文件
func (l *LogFileOut) openNew() error { func (this *LogFileOut) openNew() error {
err := os.MkdirAll(l.dir(), 0755) err := os.MkdirAll(this.dir(), 0755)
if err != nil { if err != nil {
return fmt.Errorf("can't make directories for new logfile: %s", err) return fmt.Errorf("can't make directories for new logfile: %s", err)
} }
name := l.filename() name := this.filename()
mode := os.FileMode(0666) mode := os.FileMode(0666)
info, err := osStat(name) info, err := osStat(name)
//备份老的日志文件 //备份老的日志文件
if err == nil { if !this.UniqueLog && err == nil {
// Copy the mode off the old logfile. // Copy the mode off the old logfile.
mode = info.Mode() mode = info.Mode()
// move the existing file // move the existing file
newname := backupName(name, l.LocalTime) newname := backupName(name, this.LocalTime)
if err := os.Rename(name, newname); err != nil { if err := os.Rename(name, newname); err != nil {
return fmt.Errorf("can't rename log file: %s", err) return fmt.Errorf("can't rename log file: %s", err)
} }
@ -235,14 +247,25 @@ func (l *LogFileOut) openNew() error {
} }
} }
//创建新的日志文件 if !this.UniqueLog {
f, err := os.OpenFile(name, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, mode) //创建新的日志文件
if err != nil { f, err := os.OpenFile(name, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, mode)
return fmt.Errorf("can't open new logfile: %s", err) if err != nil {
return fmt.Errorf("can't open new logfile: %s", err)
}
this.file = f
this.size = 0
this.ctime = currentTime()
} else {
//最佳写入
f, err := os.OpenFile(name, os.O_APPEND|os.O_CREATE|os.O_WRONLY, mode)
if err != nil {
return fmt.Errorf("can't open new logfile: %s", err)
}
this.file = f
this.size = 0
this.ctime = currentTime()
} }
l.file = f
l.size = 0
l.ctime = currentTime()
return nil return nil
} }

View File

@ -17,6 +17,7 @@ func newSys(options *Options) (sys *Logger, err error) {
MaxBackups: options.MaxBackups, //最大备份数 MaxBackups: options.MaxBackups, //最大备份数
MaxSize: options.MaxSize, //最大日志文件大小 MaxSize: options.MaxSize, //最大日志文件大小
LocalTime: true, //使用本地时间 LocalTime: true, //使用本地时间
UniqueLog: options.UniqueLog, //是否唯一文件
} }
if !options.IsDebug { if !options.IsDebug {
if err = hook.openNew(); err != nil { if err = hook.openNew(); err != nil {

View File

@ -22,6 +22,7 @@ type Options struct {
ReportCaller Loglevel //是否输出堆栈信息 ReportCaller Loglevel //是否输出堆栈信息
CallerSkip int //堆栈深度 CallerSkip int //堆栈深度
Encoder LogEncoder //日志输出样式 Encoder LogEncoder //日志输出样式
UniqueLog bool //唯一日志文件(文件不分割 不备份,一直追加日志)
CupTimeTime int //日志分割时间 单位 小时 CupTimeTime int //日志分割时间 单位 小时
MaxAgeTime int //日志最大保存时间 单位天 MaxAgeTime int //日志最大保存时间 单位天
MaxBackups int //最大备份日志个数 MaxBackups int //最大备份日志个数
@ -75,6 +76,13 @@ func SetEncoder(v LogEncoder) Option {
} }
} }
///设置唯一日志
func SetUniqueLog(v bool) Option {
return func(o *Options) {
o.UniqueLog = v
}
}
///日志分割时间 单位 小时 ///日志分割时间 单位 小时
func SetRotationTime(v int) Option { func SetRotationTime(v int) Option {
return func(o *Options) { return func(o *Options) {

View File

@ -88,7 +88,8 @@ func main() {
if err := log.OnInit(nil, if err := log.OnInit(nil,
log.SetFileName("./s.log"), log.SetFileName("./s.log"),
log.SetLoglevel(log.DebugLevel), log.SetLoglevel(log.DebugLevel),
log.SetIsDebug(true)); err != nil { log.SetUniqueLog(true),
log.SetIsDebug(false)); err != nil {
panic(fmt.Sprintf("Sys log Init err:%v", err)) panic(fmt.Sprintf("Sys log Init err:%v", err))
} else { } else {
log.Infof("Sys log Init success !") log.Infof("Sys log Init success !")
@ -341,6 +342,7 @@ func convertServiceSttings(config *comm.GameConfig, id int, stype string, ip str
"IsDebug": false, "IsDebug": false,
"Loglevel": log.InfoLevel, "Loglevel": log.InfoLevel,
"MaxAgeTime": 7, "MaxAgeTime": 7,
"UniqueLog": true,
} }
} }