golang 日志分析_golang日志库glog解析

glog简介

glog是著名的google开源C++日志库glog的golang版本,glog是一个轻量级的日志库,上手简单不需要配置文件并且稳定高效,但是可以自定义控制的内容就少了。

glog主要有以下几个特点:

glog有四种日志等级INFO < WARING < ERROR < FATAL,不同等级的日志是打印到不同文件的,低等级的日志文件中(INFO)会包含高等级的日志信息(ERROR)

通过命令行传递参数 --log_dir指定日志文件的存放目录,默认为os.TempDir()

可以根据文件大小切割日志文件,但是不能根据日期切割日志文件

日志输出格式是固定的(Lmmdd hh:mm:ss.uuuuuu threadid file:line] msg...)不可以自定义

在程序开始时需要调用flag.Parse()解析命令行参数,在程序退出时需要调用glog.Flush() 确保将缓存区中的内容输出到文件中。

使用事例

func main() {

//初始化命令行参数

flag.Parse()

//退出时调用,确保日志写入文件中

defer glog.Flush()

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)

}

//假设编译后的可执行程序名为demo,运行时指定log_dir参数将日志文件保存到特定的目录

// ./demo --log_dir=./log

源码分析

我们顺着事例代码中的 glog.Error("error glog") 这行代码来看下,来看下日志内容是如何输出到文件中去的。

func Error(args ...interface{}) {

logging.print(errorLog, args...)

}

//errorLog是glog定义的日志等级标记,底层是一个int32类型的变量

type severity int32

const (

infoLog severity = iota

warningLog

errorLog

fatalLog

numSeverity = 4

)

// Error函数实际只是做了一层简单的封装,实际调用的是loggering对象的print函数,logg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值