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

View File

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

View File

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

View File

@ -22,6 +22,7 @@ type Options struct {
ReportCaller Loglevel //是否输出堆栈信息
CallerSkip int //堆栈深度
Encoder LogEncoder //日志输出样式
UniqueLog bool //唯一日志文件(文件不分割 不备份,一直追加日志)
CupTimeTime int //日志分割时间 单位 小时
MaxAgeTime 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 {
return func(o *Options) {

View File

@ -88,7 +88,8 @@ func main() {
if err := log.OnInit(nil,
log.SetFileName("./s.log"),
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))
} else {
log.Infof("Sys log Init success !")
@ -341,6 +342,7 @@ func convertServiceSttings(config *comm.GameConfig, id int, stype string, ip str
"IsDebug": false,
"Loglevel": log.InfoLevel,
"MaxAgeTime": 7,
"UniqueLog": true,
}
}