日志文件

默认情况下,日志文件名称以当前时间日期命名,格式为YYYY-MM-DD.log,我们可以使用SetFile方法来设置文件名称的格式,并且文件名称格式支持 gtime (时间管理模块) 时间格式 。简单示例:

  1. package main
  2. import (
  3. "github.com/gogf/gf/os/glog"
  4. "github.com/gogf/gf/os/gfile"
  5. "github.com/gogf/gf/frame/g"
  6. )
  7. // 设置日志等级
  8. func main() {
  9. path := "/tmp/glog"
  10. glog.SetPath(path)
  11. glog.SetStdoutPrint(false)
  12. // 使用默认文件名称格式
  13. glog.Println("标准文件名称格式,使用当前时间时期")
  14. // 通过SetFile设置文件名称格式
  15. glog.SetFile("stdout.log")
  16. glog.Println("设置日志输出文件名称格式为同一个文件")
  17. // 链式操作设置文件名称格式
  18. glog.File("stderr.log").Println("支持链式操作")
  19. glog.File("error-{Ymd}.log").Println("文件名称支持带gtime日期格式")
  20. glog.File("access-{Ymd}.log").Println("文件名称支持带gtime日期格式")
  21. list, err := gfile.ScanDir(path, "*")
  22. g.Dump(err)
  23. g.Dump(list)
  24. }

执行后,输出结果为:

  1. null
  2. [
  3. "/tmp/glog/2018-10-10.log",
  4. "/tmp/glog/access-20181010.log",
  5. "/tmp/glog/error-20181010.log",
  6. "/tmp/glog/stderr.log",
  7. "/tmp/glog/stdout.log"
  8. ]

可以看到,文件名称格式中如果需要使用gtime时间格式,格式内容需要使用{xxx}包含起来。该示例中也使用到了链式操作的特性,具体请看后续说明。

日志目录

默认情况下,glog将会输出日志内容到标准输出,我们可以通过SetPath方法设置日志输出的目录路径,这样日志内容将会写入到日志文件中,并且由于其内部使用了gfpool文件指针池,文件写入的效率相当优秀。简单示例:

  1. package main
  2. import (
  3. "github.com/gogf/gf/os/glog"
  4. "github.com/gogf/gf/os/gfile"
  5. "github.com/gogf/gf/frame/g"
  6. )
  7. // 设置日志输出路径
  8. func main() {
  9. path := "/tmp/glog"
  10. glog.SetPath(path)
  11. glog.Println("日志内容")
  12. list, err := gfile.ScanDir(path, "*")
  13. g.Dump(err)
  14. g.Dump(list)
  15. }

执行后,输出内容为:

  1. 2018-10-10 14:03:46.904 日志内容
  2. null
  3. [
  4. "/tmp/glog/2018-10-10.log"
  5. ]

当通过SetPath设置日志的输出目录,如果目录不存在时,将会递归创建该目录路径。可以看到,执行Println之后,在/tmp下创建了日志目录glog,并且在其下生成了日志文件。同时,我们也可以看见日志内容不仅输出到了文件,默认情况下也输出到了终端,我们可以通过SetStdoutPrint(false)方法来关闭终端的日志输出,这样日志内容仅会输出到日志文件中。