flags用于控制日志组件的额外特性开关,这些属性使用常量进行组合控制,包括:

F_ASYNC      = 1 << iota // 开启日志异步输出
F_FILE_LONG              // 打印调用行号信息,完整绝对路径,例如:/a/b/c/d.go:23
F_FILE_SHORT             // 打印调用行号信息,仅打印文件名,例如:d.go:23,覆盖 F_FILE_LONG.
F_TIME_DATE              // 打印当前日期,如:2009-01-23
F_TIME_TIME              // 打印当前时间,如:01:23:23
F_TIME_MILLI             // 打印当前时间+毫秒,如:01:23:23.675
F_TIME_STD = F_TIME_DATE | F_TIME_MILLI // (默认)打印当前日期+时间+毫秒,如:2009-01-23 01:23:23.675

使用示例:

package main

import (
	"context"

	"github.com/gogf/gf/v2/os/glog"
)

func main() {
	ctx := context.TODO()
	l := glog.New()
	l.SetFlags(glog.F_TIME_TIME | glog.F_FILE_SHORT)
	l.Print(ctx, "time and short line number")
	l.SetFlags(glog.F_TIME_MILLI | glog.F_FILE_LONG)
	l.Print(ctx, "time with millisecond and long line number")
	l.SetFlags(glog.F_TIME_STD | glog.F_FILE_LONG)
	l.Print(ctx, "standard time format and long line number")
}


执行后,终端输出结果为:

PS C:\hailaz\test> go run .\main.go
16:05:35 main.go:13: time and short line number 
16:05:35.108 C:/hailaz/test/main.go:15: time with millisecond and long line number 
2022-01-05 16:05:35.109 C:/hailaz/test/main.go:17: standard time format and long line number
  • No labels

5 Comments

  1. log日志格式level设置的多种方式 和 Flags设置方式 提供了灵活性;可读性和规范性是不是相对差一些?这些功能是不是可以不体现或者不建议呢,让新手 更轻松一些;

  2. 郭强 郭哥,看了日志组件遇到一个问题:怎么设置log 的format。日志内容默认时间格式为 时间 [级别] trace-id 内容 换行,想要改成:时间 [级别] trace-id 行号 goroutine-id 内容 换行; 目前行号有2个形式。

    1. 使用glog.New().setFlag(glog.F_FILE_SHORT)可以加上行号,但是带来一个问题,config.toml 文件的所有配置项都需要配置一遍;
    2. g.Log()单例,但是每次log输出都需要加上链式,比如:g.Log().Line().Debug(r.Context(), "xxx"),才可以设置行号。
      问:能使用g.Log()单例,而不用每次都需要链式调用就可以输出行号么?有类似于python的loguru或者java的log4j的log format之类的实现么?

      行号解决了? 那想要加上其他的东西,又该怎么做呢?


    1. g.Log().SetFlags(g.Log().GetFlags() | glog.F_FILE_SHORT)

      1. 我放到config.toml也实现了,只是不优美:

        # Logger configurations.
        [logger]
            path   = "log/"
            level  = "all"
            rotateExpire = "1d"  # 一天一个回滚
            rotateBackupLimit =  7   # 保留7个日志文件
            writerColorEnable = true  # 日志文件带有颜色
            RotateBackupCompress =  9  # 日志文件压缩级别,0-9,9最高
            stdout = true
            Flags = 21 #时分秒 文件:行号 异步输出