diff --git a/g/os/glog/glog.go b/g/os/glog/glog.go index 661142d34..00f825d81 100644 --- a/g/os/glog/glog.go +++ b/g/os/glog/glog.go @@ -20,7 +20,6 @@ type Logger struct { path *gtype.String // 日志写入的目录路径 debug *gtype.Bool // 是否允许输出DEBUG信息 btSkip *gtype.Int // 错误产生时的backtrace回调信息skip条数 - ln string // 日志换行符,window是\r\n,linux是\n } // 默认的日志对象 @@ -33,17 +32,9 @@ func New() *Logger { path : gtype.NewString(), debug : gtype.NewBool(true), btSkip : gtype.NewInt(3), - ln : "\n", } } -// 获取默认的日志对象 -// @author zseeker -// @date 2018-05-23 -func GetLogger() *Logger { - return logger -} - // 日志日志目录绝对路径 func SetPath(path string) { logger.SetPath(path) diff --git a/g/os/glog/glog_logger.go b/g/os/glog/glog_logger.go index d017bbb48..5c76fdf81 100644 --- a/g/os/glog/glog_logger.go +++ b/g/os/glog/glog_logger.go @@ -24,6 +24,20 @@ const ( gDEFAULT_FILE_POOL_FLAGS = os.O_CREATE|os.O_WRONLY|os.O_APPEND ) +// 默认的日志换行符 +var ln string + +// 初始化日志换行符 +// @author zseeker +// @date 2018-05-23 +func init() { + if runtime.GOOS == "windows" { + ln = "\r\n" + } else { + ln = "\n" + } +} + // 设置BacktraceSkip func (l *Logger) SetBacktraceSkip(skip int) { l.btSkip.Set(skip) @@ -80,16 +94,6 @@ func (l *Logger) SetPath(path string) error { return errors.New(errstr) } l.path.Set(strings.TrimRight(path, gfile.Separator)) - - // 添加日志换行符适配,window是\r\n,linux是\n - // @author zseeker - // @date 2018-05-23 - if runtime.GOOS == "windows" { - l.ln = "\r\n" - } else { - l.ln = "\n" - } - return nil } @@ -98,14 +102,7 @@ func (l *Logger) print(defaultIO io.Writer, s string) { w := l.GetIO() if w == nil { if v := l.getFileByPool(); v != nil { - // 同时输出到文件和终端 - // @author zseeker - // @date 2018-05-23 - ws := []io.Writer { - v.File(), - os.Stdout, - } - w = io.MultiWriter(ws...) + w = v.File() defer v.Close() } else { w = defaultIO @@ -126,22 +123,22 @@ func (l *Logger) errPrint(s string) { // 记录调用回溯信息 backtrace := l.backtrace() if s[len(s) - 1] == byte('\n') { - s = s + backtrace + l.ln + s = s + backtrace + ln } else { - s = s + l.ln + backtrace + l.ln + s = s + ln + backtrace + ln } l.print(os.Stderr, s) } // 调用回溯字符串 func (l *Logger) backtrace() string { - backtrace := "Trace:" + l.ln + backtrace := "Trace:" + ln index := 1 for i := 1; i < 10000; i++ { if _, cfile, cline, ok := runtime.Caller(i + l.btSkip.Val()); ok { // 不打印出go源码路径 if !gregx.IsMatchString("^" + runtime.GOROOT(), cfile) { - backtrace += strconv.Itoa(index) + ". " + cfile + ":" + strconv.Itoa(cline) + l.ln + backtrace += strconv.Itoa(index) + ". " + cfile + ":" + strconv.Itoa(cline) + ln index++ } } else { @@ -164,11 +161,11 @@ func (l *Logger) Printf(format string, v ...interface{}) { } func (l *Logger) Println(v ...interface{}) { - l.stdPrint(fmt.Sprint(v...) + l.ln) + l.stdPrint(fmt.Sprint(v...) + ln) } func (l *Logger) Printfln(format string, v ...interface{}) { - l.stdPrint(fmt.Sprintf(format + l.ln, v...)) + l.stdPrint(fmt.Sprintf(format + ln, v...)) } func (l *Logger) Fatal(v ...interface{}) { @@ -182,12 +179,12 @@ func (l *Logger) Fatalf(format string, v ...interface{}) { } func (l *Logger) Fatalln(v ...interface{}) { - l.errPrint(fmt.Sprint(v...) + l.ln) + l.errPrint(fmt.Sprint(v...) + ln) os.Exit(1) } func (l *Logger) Fatalfln(format string, v ...interface{}) { - l.errPrint(fmt.Sprintf(format + l.ln, v...)) + l.errPrint(fmt.Sprintf(format + ln, v...)) os.Exit(1) } @@ -204,41 +201,41 @@ func (l *Logger) Panicf(format string, v ...interface{}) { } func (l *Logger) Panicln(v ...interface{}) { - s := fmt.Sprint(v...) + l.ln + s := fmt.Sprint(v...) + ln l.errPrint(s) panic(s) } func (l *Logger) Panicfln(format string, v ...interface{}) { - s := fmt.Sprintf(format + l.ln, v...) + s := fmt.Sprintf(format + ln, v...) l.errPrint(s) panic(s) } func (l *Logger) Info(v ...interface{}) { - l.stdPrint("[INFO] " + fmt.Sprint(v...) + l.ln) + l.stdPrint("[INFO] " + fmt.Sprint(v...) + ln) } func (l *Logger) Debug(v ...interface{}) { if l.GetDebug() { - l.stdPrint("[DEBU] " + fmt.Sprint(v...) + l.ln) + l.stdPrint("[DEBU] " + fmt.Sprint(v...) + ln) } } func (l *Logger) Notice(v ...interface{}) { - l.errPrint("[NOTI] " + fmt.Sprint(v...) + l.ln) + l.errPrint("[NOTI] " + fmt.Sprint(v...) + ln) } func (l *Logger) Warning(v ...interface{}) { - l.errPrint("[WARN] " + fmt.Sprint(v...) + l.ln) + l.errPrint("[WARN] " + fmt.Sprint(v...) + ln) } func (l *Logger) Error(v ...interface{}) { - l.errPrint("[ERRO] " + fmt.Sprint(v...) + l.ln) + l.errPrint("[ERRO] " + fmt.Sprint(v...) + ln) } func (l *Logger) Critical(v ...interface{}) { - l.errPrint("[CRIT] " + fmt.Sprint(v...) + l.ln) + l.errPrint("[CRIT] " + fmt.Sprint(v...) + ln) } func (l *Logger) Infof(format string, v ...interface{}) { @@ -268,27 +265,27 @@ func (l *Logger) Criticalf(format string, v ...interface{}) { } func (l *Logger) Infofln(format string, v ...interface{}) { - l.stdPrint("[INFO] " + fmt.Sprintf(format, v...) + l.ln) + l.stdPrint("[INFO] " + fmt.Sprintf(format, v...) + ln) } func (l *Logger) Debugfln(format string, v ...interface{}) { if l.GetDebug() { - l.stdPrint("[DEBU] " + fmt.Sprintf(format, v...) + l.ln) + l.stdPrint("[DEBU] " + fmt.Sprintf(format, v...) + ln) } } func (l *Logger) Noticefln(format string, v ...interface{}) { - l.errPrint("[NOTI] " + fmt.Sprintf(format, v...) + l.ln) + l.errPrint("[NOTI] " + fmt.Sprintf(format, v...) + ln) } func (l *Logger) Warningfln(format string, v ...interface{}) { - l.errPrint("[WARN] " + fmt.Sprintf(format, v...) + l.ln) + l.errPrint("[WARN] " + fmt.Sprintf(format, v...) + ln) } func (l *Logger) Errorfln(format string, v ...interface{}) { - l.errPrint("[ERRO] " + fmt.Sprintf(format, v...) + l.ln) + l.errPrint("[ERRO] " + fmt.Sprintf(format, v...) + ln) } func (l *Logger) Criticalfln(format string, v ...interface{}) { - l.errPrint("[CRIT] " + fmt.Sprintf(format, v...) + l.ln) + l.errPrint("[CRIT] " + fmt.Sprintf(format, v...) + ln) } \ No newline at end of file