Merge branch 'dev' of http://git.legu.cc/liwei_3d/go_dreamfactory into dev
This commit is contained in:
commit
5c4b5ffd0c
@ -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": "",
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -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) {
|
||||
|
@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user