tank/rest/logger.go
2018-11-30 17:37:52 +08:00

74 lines
1.6 KiB
Go

package rest
import (
"fmt"
"log"
"os"
)
//日志系统必须高保
//全局唯一的日志对象(在main函数中初始化)
var LOGGER *Logger = &Logger{}
//在Logger的基础上包装一个全新的Logger.
type Logger struct {
//继承logger
goLogger *log.Logger
//日志记录所在的文件
file *os.File
}
//处理日志的统一方法。
func (this *Logger) log(prefix string, format string, v ...interface{}) {
fmt.Printf(format+"\r\n", v...)
this.goLogger.SetPrefix(prefix)
this.goLogger.Printf(format, v...)
}
//处理日志的统一方法。
func (this *Logger) Debug(format string, v ...interface{}) {
this.log("[debug]", format, v...)
}
func (this *Logger) Info(format string, v ...interface{}) {
this.log("[info ]", format, v...)
}
func (this *Logger) Warn(format string, v ...interface{}) {
this.log("[warn ]", format, v...)
}
func (this *Logger) Error(format string, v ...interface{}) {
this.log("[error]", format, v...)
}
func (this *Logger) Panic(format string, v ...interface{}) {
this.log("[panic]", format, v...)
panic(fmt.Sprintf(format, v...))
}
func (this *Logger) Init() {
//日志输出到文件中 文件打开后暂时不关闭
filePath := GetLogPath() + "/tank.log"
fmt.Printf("使用日志文件 %s\r\n", filePath)
f, err := os.OpenFile(filePath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
panic("日志文件无法正常打开: " + err.Error())
}
this.goLogger = log.New(f, "", log.Ltime)
this.file = f
}
func (this *Logger) Destroy() {
if this.file != nil {
err := this.file.Close()
if err != nil {
panic("尝试关闭日志时出错: " + err.Error())
}
}
}