默认情况下,日志文件名称以当前时间日期命名,格式为YYYY-MM-DD.log
,我们可以使用SetFile
方法来设置文件名称的格式,并且文件名称格式支持 时间管理-gtime
时间格式 。简单示例:
package main
import (
"context"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gfile"
"github.com/gogf/gf/v2/os/glog"
)
// 设置日志等级
func main() {
ctx := context.TODO()
path := "./glog"
glog.SetPath(path)
glog.SetStdoutPrint(false)
// 使用默认文件名称格式
glog.Print(ctx, "标准文件名称格式,使用当前时间时期")
// 通过SetFile设置文件名称格式
glog.SetFile("stdout.log")
glog.Print(ctx, "设置日志输出文件名称格式为同一个文件")
// 链式操作设置文件名称格式
glog.File("stderr.log").Print(ctx, "支持链式操作")
glog.File("error-{Ymd}.log").Print(ctx, "文件名称支持带gtime日期格式")
glog.File("access-{Ymd}.log").Print(ctx, "文件名称支持带gtime日期格式")
list, err := gfile.ScanDir(path, "*")
g.Dump(err)
g.Dump(list)
}
执行后,输出结果为:
<nil>
[
"C:hailaztestglog2021-12-31.log",
"C:hailaztestglogaccess-20211231.log",
"C:hailaztestglogerror-20211231.log",
"C:hailaztestglogstderr.log",
"C:hailaztestglogstdout.log",
]
可以看到,文件名称格式中如果需要使用gtime
时间格式,格式内容需要使用{xxx}
包含起来。该示例中也使用到了链式操作的特性,具体请看后续说明。
默认情况下,glog
将会输出日志内容到标准输出,我们可以通过SetPath
方法设置日志输出的目录路径,这样日志内容将会写入到日志文件中,并且由于其内部使用了gfpool
文件指针池,文件写入的效率相当优秀。简单示例:
package main
import (
"context"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gfile"
"github.com/gogf/gf/v2/os/glog"
)
// 设置日志等级
func main() {
ctx := context.TODO()
path := "./glog"
glog.SetPath(path)
glog.Print(ctx, "日志内容")
list, err := gfile.ScanDir(path, "*")
g.Dump(err)
g.Dump(list)
}
执行后,输出内容为:
2021-12-31 11:32:16.742 日志内容
<nil>
[
"C:hailaztestglog2021-12-31.log",
]
当通过SetPath
设置日志的输出目录,如果目录不存在时,将会递归创建该目录路径。可以看到,执行Println
之后,在/tmp
下创建了日志目录glog
,并且在其下生成了日志文件。同时,我们也可以看见日志内容不仅输出到了文件,默认情况下也输出到了终端,我们可以通过SetStdoutPrint(false)
方法来关闭终端的日志输出,这样日志内容仅会输出到日志文件中。
gcfg组件采用接口化设计,默认提供的是基于文件系统的接口实现。支持的数据文件格式包括:JSON/XML/YAML(YML)/TOML/INI...
GoFrame框架封装了一些常用的数据类型以及对象获取方法,通过g.*方法获取。g是一个强耦合的模块,目的...
GoFrame框架提供了功能强大的gf命令行开发辅助工具,是框架发展的一个重要组成部分,工具地址:https://github.com/gogf...
一、基本介绍结构化编程,简单来理解,就是通过定义结构体传递和返回参数。我们建议在必要的场景下使用结构化定义来管理输出/输...
错误日志信息支持Stack特性,该特性可以自动打印出当前调用日志组件方法的堆栈信息,该堆栈信息可以通过Notice*/Warning*/...