glog
是通用的高性能日志管理模块,实现了强大易用的日志管理功能,是goframe
开发框架的核心组件之一。
基本介绍
使用方式:
import "github.com/gogf/gf/os/glog"
接口文档:
http://godoc.org/github.com/gogf/gf/os/glog
简要说明:
glog
模块固定日志文件名称格式为*.log
,即固定使用.log
作为日志文件名后缀。glog
支持文件输出、日志级别、日志分类、调试管理、调用跟踪、链式操作、滚动切分等等丰富特性。- 可以使用
glog.New
方法创建glog.Logger
对象用于自定义日志打印,也可以并推荐使用glog
默认提供的包方法来打印日志。 - 当使用包方法修改模块配置时,注意任何的
glog.Set*
设置方法都将会全局生效。 - 日志内容默认时间格式为
时间 [级别] 内容 换行
,其中时间
精确到毫秒级别,级别
为可选输出,内容
为调用端的参数输入,换行
为可选输出(部分方法自动为日志内容添加换行符号),日志内容示例:2018-10-10 12:00:01.568 [ERRO] 产生错误
。 Print*/Debug*/Info*
方法输出日志内容到标准输出(stdout
),为防止日志的错乱,Notice*/Warning*/Error*/Critical*/Panic*/Fatal*
方法也是将日志内容输出到标准输出(stdout
)。- 其中
Panic*
方法在输出日志信息后会引发panic
错误方法,Fatal*
方法在输出日志信息之后会停止进程运行,并返回进程状态码值为1
(正常程序退出状态码为0
)。
知识图谱
单例对象
从goframe v1.9
版本开始,提供了g.Log()
单例对象,开发者可以通过给定不同的单例名称管理不同的日志单例对象。单例对象在第一次使用时会执行初始化,初始化时会自动读取配置文件中的相关日志配置。因此,如果使用单例对象,开发者都不需要自行管理日志对象的配置,一切通过配置文件管理即可,极大提高组件的维护效率。
glog.Print
和g.Log().Print
区别
glog
是日志组件的包名,g.Log()
是一个日志组件单例对象。g.Log()
单例对象通过对象管理组件g
包来维护,对象初始化时会自动读取日志配置,使用简便,大多数场景下推荐使用这种方式使用日志组件。glog
通过独立组件的形式使用,默认情况下会直接输出日志到终端。也可以通过配置管理方法设置全局配置,或者通过New
创建独立的日志对象使用。
8 Comments
jiftle
cgo中printf不能输出请问gf框架是否做了拦截处理,因为发现fprintf(stderr,...)可以输出,fprintf(stdout,...)不可以。
郭强
glog
日志组件并没有对标准输出做拦截处理,不会影响标准库的这些函数。jiftle
好的。可能是dll延时加载的导致的
wohenbushuang
是否应该允许面向stdout和file分别设置level呢,比如stdout=notify或者warning过滤重要信息用于监控,file=debug用于复现bug?
郭强
应该没有日志组件这么设计的。。
杨延庆
日志需要发送到 ES 做统一分析,以往是使用纯 json 格式输出,这样 LogStash 就可以很方便的转换到 ES 的字段,检索精准效率高。没找到 gf 日志模块的这个配置,请问日志标准化有什么最佳实践吗? 郭强
郭强
下个版本
v1.17
有自定义日志处理Handler
的特性,开发者可以自己自定义输出内容格式。杨延庆
v1.17 大概什么时间发布?