go语言写日志
来源:互联网 发布:淘宝鞋店知乎 编辑:程序博客网 时间:2024/05/16 03:14
go语言写日志
go语言有一个标准库,log,提供了最基本的日志功能,但是没有什么高级的功能,如果需要高级的特性,可以选择glog或log4go。
glog是google提供的,类似于google的c++ log库,使用起来非常简单,下面介绍一下;log4go的用法和log4j一样,可配置性比较高。
glog只提供了少数几个选项,通过命令行控制,例如:
-log_dir: 日志文件保存目录
-alsologtostderr: 日志写入文件的同时,输出到stderr
-v:配置V输出的等级。
glog使用非常简单,只需要import就可以了。glog package的init函数会初始化并启动一个glog 的flushDaemon协程,你只需要使用glog.Info, glog.Warning, glog.Error或glog.Fatal即可。
一个简单的例子:
package mainimport ("flag""fmt""github.com/golang/glog""os")// 避免没有引用fmt的编译错误var _ = fmt.Printlnfunc main() {//初始化命令行参数flag.Parse()glog.Info("hello, glog")glog.Warning("warning glog")glog.Error("error glog")glog.Infof("info %d", 1)glog.Warningf("warning %d", 2)glog.Errorf("error %d", 3)glog.V(3).Infoln("info with v 3")glog.V(2).Infoln("info with v 2")glog.V(1).Infoln("info with v 1")glog.V(0).Infoln("info with v 0")// 退出时调用,确保日志写入文件中glog.Flush()}
有几点说明:
1、高等级的日志会同时输出到比它等级低的文件中,例如error日志会同时输出到error文件,warning文件,info文件中,依次类推;
2、启动时,调用flag.Parse用来初始化glog的参数,例如xxx.exe -log_dir=”./” -v=3。如果不提供参数,log_dir目录为
os.TempDir(),v的值为0
3、程序退出时,需要调用glog.Flush(),将日志写入文件中。
4、V函数。默认的v选项为0,可以通过命令行设置v值。V函数的功能是,当V函数的参数高于glog的v值时,不会执行后续的Info函数,否则就执行。
glog.V(2).Info
相当于
if glog.V(2) { Info()}
V的实现很精彩,有兴趣可以看看源代码。
5、运行示例,假设文件名为f.go
go build f.gof.exe -log_dir="./" -v=3f.exe -log_dir="./" -v=2
6、日志文件名
日志文件名由以下几部分组成:
程序名.电脑名.用户名.log.xxx.YYYYMMDD-HHMMSS.pid,其中
xxx为日志等级,例如INFO,ERROR,WARNING
YYYYMMDD为年月日
HHMMSS为小时,分钟,秒
pid是进程id
7、glog.Fatal的默认行为是输出Fatal等级日志,并强制进程退出,不过可以自定义Fatal的行为
8、glog还提供了vmodule这样高级的用法,有兴趣可以研究一下。
glog代码地址:
https://github.com/golang/glog
- go语言写日志
- Go语言写基数排序
- Go语言程序记录日志
- Go语言 常用日志记录方法
- go语言学习------Go 记录日志——log包
- 用Go写Android程序(3) - Go语言速成
- go 语言怎么写test测试
- C语言写 系统日志
- C语言写日志功能
- 开源日志:关于GO语言的资料汇总
- 用GO语言对日志文件进行分析
- 用go语言写了一个端口扫描器
- GO 语言写的加密算法(附 java 版翻译)
- GO语言如何调用C写的函数
- 通过nginx反向代理go语言写的http服务器
- go语言写的并行排序算法(快速排序)
- Windows下用安装go语言写程序
- GO语言写java虚拟机 笔记(第一章)
- (HDUStep 1.2.2)hide handkerchief(用辗转相除法来求最大公约数)
- MFC CFileDialog实现源码
- abort函数和exit函数
- 【三层程序设计】——总结
- String转int
- go语言写日志
- VS2008编译错误fatal error C1902: 程序数据库管理器不匹配;请检查安装解决
- svn
- 反编译apk
- mybatis打印SQL,并显示参数
- 声母数字助记系统
- uvaoj 12169 Disgruntled Judge 扩展欧几里得算法
- 排序算法(四)- 希尔排序
- volley框架下发送和读取cookie