github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/blogweb_gin/logs/log.go (about)

     1  package logs
     2  
     3  import (
     4  	"io"
     5  	"io/ioutil"
     6  	"log"
     7  	"os"
     8  )
     9  
    10  var (
    11  	Trace   *log.Logger
    12  	Info    *log.Logger
    13  	Warning *log.Logger
    14  	Error   *log.Logger
    15  )
    16  
    17  const logDir = "logdir"
    18  
    19  func init() {
    20  	// 检测log目录在不在不在就创建
    21  	if exists, _ := pathExists(logDir); !exists {
    22  		os.Mkdir(logDir, os.ModePerm)
    23  	}
    24  	file, err := os.OpenFile(logDir+"/error.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
    25  	if err != nil {
    26  		log.Fatalln("Failed to open error log file:", err)
    27  	}
    28  
    29  	Trace = log.New(ioutil.Discard, "TRACE", log.Ldate|log.Ltime|log.Lshortfile)
    30  	Info = log.New(os.Stdout, "INFO: ", log.Ldate|log.Ltime|log.Lshortfile)
    31  	Warning = log.New(os.Stdout, "WARNING: ", log.Ldate|log.Ltime|log.Lshortfile)
    32  	Error = log.New(io.MultiWriter(file, os.Stdout), "ERROR: ", log.Ldate|log.Ltime|log.Llongfile) // 合并流 输出到os.std 中 还输出到文件中
    33  
    34  }
    35  
    36  func pathExists(path string) (bool, error) {
    37  	_, err := os.Stat(path)
    38  	if err == nil {
    39  		return true, nil
    40  	}
    41  	if os.IsNotExist(err) {
    42  		return false, nil
    43  	}
    44  	return false, err
    45  }