123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- package logging
- import (
- "fmt"
- "io"
- "log"
- "os"
- "path/filepath"
- "runtime"
- "time"
- "github.com/gin-gonic/gin"
- "kpt.xdmy/pkg/file"
- "kpt.xdmy/pkg/setting"
- )
- type Level int
- var (
- F *os.File
- DefaultPrefix = ""
- DefaultCallerDepth = 2
- DefaultPath string
- logger *log.Logger
- logPrefix = ""
- levelFlags = []string{"DEBUG", "INFO", "WARN", "ERROR", "FATAL"}
- )
- const (
- DEBUG Level = iota
- INFO
- WARNING
- ERROR
- FATAL
- )
- func Setup() {
- var err error
- //tchan :=time.Tick(24*time.Hour)
- DefaultPath, _ = setting.GetCurrentPath()
- filePath := DefaultPath + getLogFilePath()
- fileName := getLogFileName()
- F, err = file.MustOpen(fileName, filePath)
- if err != nil {
- log.Fatalf("logging.Setup err: %v", err)
- }
- println(filePath)
- logger = log.New(F, DefaultPrefix, log.LstdFlags)
- //gin.DefaultWriter = io.MultiWriter(F, os.Stdout)
- go func() {
- defer func() {
- if err := recover(); err != nil {
- log.Fatalf("logging.recover err: %v", err)
- }
- }()
- tchan := time.Tick(24 * time.Hour)
- for {
- select {
- case <-tchan:
- F.Close()
- //fmt.Println("t1定时器")
- filePath := DefaultPath + getLogFilePath()
- fileName := getLogFileName()
- F, err = file.MustOpen(fileName, filePath)
- if err != nil {
- log.Fatalf("logging.Setup err: %v", err)
- }
- logger = log.New(F, DefaultPrefix, log.LstdFlags)
- gin.DefaultWriter = io.MultiWriter(F, os.Stdout)
- }
- }
- }()
- //// gin log设置
- //gin.LoggerWithFormatter(func(param gin.LogFormatterParams) string {
- //
- // // 你的自定义格式
- // return fmt.Sprintf("%s - [%s] \"%s %s %s %d %s \"%s\" %s\"%s\n",
- // param.ClientIP,
- // param.TimeStamp.Format(time.RFC1123),
- // param.Method,
- // param.Path,
- // param.Request.Proto,
- // param.StatusCode,
- // param.Latency,
- // param.Request.UserAgent(),
- // param.ErrorMessage,
- // param.Request.Form,
- // )
- //})
- }
- func Debug(v ...interface{}) {
- setPrefix(DEBUG)
- logger.Println(v)
- }
- func Info(v ...interface{}) {
- setPrefix(INFO)
- logger.Println(v)
- }
- func Warn(v ...interface{}) {
- setPrefix(WARNING)
- logger.Println(v)
- }
- func Error(v ...interface{}) {
- setPrefix(ERROR)
- logger.Println(v)
- }
- func Fatal(v ...interface{}) {
- setPrefix(FATAL)
- logger.Fatalln(v)
- }
- func setPrefix(level Level) {
- _, file, line, ok := runtime.Caller(DefaultCallerDepth)
- if ok {
- logPrefix = fmt.Sprintf("[%s][%s:%d]", levelFlags[level], filepath.Base(file), line)
- } else {
- logPrefix = fmt.Sprintf("[%s]", levelFlags[level])
- }
- logger.SetPrefix(logPrefix)
- }
|