使用log包实现写文件日志

package main

import (
   "log"
   "os"
   "path/filepath"
)

func main() {
   curPath, err := filepath.Abs(".") // 当前目录硬盘路径,结尾不带“/”
   if err != nil {
      panic("获取当前目录硬盘路径失败:" + err.Error())
   }

   logPath := curPath + "/log"            // 日志文件保存目录
   logFile := logPath + "/yyyy-mm-dd.log" // 日志文件硬盘路径

   // 创建日志文件保存目录(若目录不存在的话)
   err = os.MkdirAll(logPath, 0755)
   if err != nil {
      panic("创建日志文件保存目录失败:" + err.Error())
   }

   // 打开日志文件(若文件不存在则自动创建)
   file, err := os.OpenFile(logFile, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)
   if err != nil {
      panic("打开日志文件失败:" + err.Error())
   }

   // 关闭日志文件
   defer func(file *os.File) {
      _ = file.Close()
   }(file)

   // 设置日志参数
   log.SetFlags(log.Llongfile | log.Ldate | log.Ltime | log.Lmicroseconds)
   log.SetPrefix("[debug] ") // 日志前缀,可根据日志类型设为debug、error等以方便筛选
   log.SetOutput(file)

   // 写入日志
   log.Printf("%v", "孩儿立志出乡关")
   log.Printf("%v", "学不成名誓不还")
   log.Printf("%v", "埋骨何须桑梓地")
   log.Printf("%v", "人生无处不青山")

   // 在生成的/log/yyyy-mm-dd.log文件里可以看到如下内容:
   // ------------------------- 俺是分割线,请无视俺 -------------------------
   // [debug] yyyy/mm/dd hh:ii:ss.xxxxxx D:/go/src/cmd/main.go:41: 孩儿立志出乡关
   // [debug] yyyy/mm/dd hh:ii:ss.xxxxxx D:/go/src/cmd/main.go:42: 学不成名誓不还
   // [debug] yyyy/mm/dd hh:ii:ss.xxxxxx D:/go/src/cmd/main.go:43: 埋骨何须桑梓地
   // [debug] yyyy/mm/dd hh:ii:ss.xxxxxx D:/go/src/cmd/main.go:44: 人生无处不青山
}

Copyright © 2024 码农人生. All Rights Reserved