对于服务器开发IO的操作在高并发情况下,是需要解决的一个硬性的指标;而对于服务器而言,日志系统的设计,是和磁盘IO直接交互,并影响服务器性能的主要因素之一。

下载地址:https://github.com/xianlezheng/log4go.git

glog简介

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

glog主要的特点

glog有四种日志等级INFO < WARING < ERROR < FATAL,不同等级的日志是打印到不同文件的,低级的日志日志文件中(INFO)会包含高等级的日志信息(ERROR);
通过命令行传递参数—log_dir指定日志文件的存放目录,默认为os.TempDir();
可以根据文件大小切割文件,但是不能根据日期切割日志文件;
日志输出格式是固定的(Lmmdd hh:mm:ss.uuuu threadid file:line] msg…)不可以自定义;
在程序开始时需要调用flag.Parse解析命令行参数,在程序退出时需要调用glog.Flush()确保将缓存区中的内容输出到文件中。

Demo

  1. package main
  2. import (
  3. "glog-master"
  4. "flag"
  5. )
  6. // 初始化
  7. func init() {
  8. // 直接初始化,主要使服务器启动后自己直接加载,并不用命令行执行对应的参数
  9. flag.Set("alsologtostderr", "true") // 日志写入文件的同时,输出到stderr
  10. flag.Set("log_dir", "./log") // 日志文件保存目录
  11. flag.Set("v", "3") // 配置V输出的等级。
  12. flag.Parse()
  13. }
  14. // 主函数
  15. func main() {
  16. // 使用
  17. // 退出时调用,确保日志写入文件中
  18. // defer glog.Flush()
  19. glog.Info("hello, glog")
  20. glog.Warning("warning glog")
  21. glog.Error("error glog")
  22. // 直接刷新到文件中
  23. glog.Flush()
  24. return
  25. }

Golang 服务器日志模块glog - 图1