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 }