Glog

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Glog的简单入门,glog虽然在配置参数方面比较麻烦,但是在小规模程序中,由于其简单灵活,也许会有优势。 0,  glog 是google的开源日志系统,相比较log4系列的日志系统,它更加轻巧灵活,而且功能也比较完善。

Glog的简单入门,glog虽然在配置参数方面比较麻烦,但是在小规模程序中,由于其简单灵活,也许会有优势。

0,  glog 是google的开源日志系统,相比较log4系列的日志系统,它更加轻巧灵活,而且功能也比较完善。 结合之前看的一些资料, 这里简单对其做个简介。

1, 安装:

最新版本:0.3.1  http://code.google.com/p/google-glog/

安装只需:./configure; make; make install

2, 简单示例

main.cpp:

#include <iostream>

#include "glog/logging.h"   // glog 头文件

using namespace std;

int main(int argc, char** argv) {

  google::InitGoogleLogging(argv[0]);    // 初始化

  // FLAGS_log_dir=".";   

  LOG(INFO) << "hello glog";     // 打印log:“hello glog.  类似于C++ stream。

}

Makefile:

LIB=$(HOME)/install/glog/lib    #glog 安装路径

INCLUDE=$(HOME)/install/glog/include

test_glog : main.o

        g++ -o $@ $^ -L$(LIB) -lglog –lpthread   #-lpthread 因为glog在多线程中需要一些锁机制。

main.o: main.cpp

        g++ -c -o $@ $^ -I$(INCLUDE)

说明:

glog 默认对log分为4级: INFO,  WARNING,  ERROR,  FATAL.  打印log语句类似于C++中的stream,实际上LOG(INFO) 宏返回的是一个继承自std::ostrstream类的对象。

           编译运行上述demo, glog默认会在/tmp/目录下生成log日志文件:

文件名各字段对应含义为:

test_glog.search-x2.username.log.INFO.20111003-161341.2083

<program name>.<hostname>.<user name>.log.<severity level>.<date>.<time>.<pid>

其中:

1),<program name> 其实对应google::InitGoogleLogging(argv[0]);中的argv[0],即通过改变google::InitGoogleLogging的参数可以修改日志文件的名称。

2),每个级别的日志会输出到不同的文件中。并且高级别日志文件会同样输入到低级别的日志文件中。 即:FATAL的信息会同时记录在INFO,WARNING,ERROR,FATAL日志文件中。默认情况下,glog还会将会将FATAL的日志发送到stderr中。

 

现在的问题是:log总不能都打印到/tmp/目录下吧。下面的小结来解决:

 

3, 参数设置:

不同于log4系列的日志系统通过配置文件的方式, glog采用命令的方式来来配置参数。在glog的官方文档里,提到如下两种方式来配置参数(以修改日志目录为例:)

1)gflags:

./your_application --log_dir=.

(gflags 我还没有使用过)

2)export 修改环境变量,如下所示:修改GLOG_log_dir为上层目录

 

3)以上两种方法都需要使用命令行,除此之外,还可以直接在程序中指定(官方文档中没有提到, glog源代码中也不鼓励这么用,但确实是可行的):

在glog/logging.h 头文件287---350行,有诸如“GLOG_log_dir”等变量的宏定义, 则其GLOG_log_dir实际为FLAGS_log_dir,  因此只需要在程序中设置FLAGS_log_dir的值即可。其他变量类似。取消main.cpp中的注释行“// FLAGS_log_dir="."; ” 试试吧

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
完美解决 fatal: unable to access ‘https://github.com/Homebrew/brew/‘
完美解决 fatal: unable to access ‘https://github.com/Homebrew/brew/‘
1413 0
|
6月前
An unexpected error was encountered while executing a WSL command. Common causes include access righ
An unexpected error was encountered while executing a WSL command. Common causes include access righ
|
11月前
npm ERR! code ENOENT npm ERR! syscall open npm ERR! errno -4058 npm ERR! enoent ENOENT: no such file
npm ERR! code ENOENT npm ERR! syscall open npm ERR! errno -4058 npm ERR! enoent ENOENT: no such file
|
并行计算 Python
报错:OMP: Error #15: Initializing libomp.dylib, but found libiomp5.dylib already initialized.
报错:OMP: Error #15: Initializing libomp.dylib, but found libiomp5.dylib already initialized.
325 0
npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree
安装glog
安装glog
198 0
npm ERR! enoent ENOENT: no such file or directory, rename
npm ERR! enoent ENOENT: no such file or directory, rename
580 0
|
开发工具 git
git【报错】fatal: the remote end hung up unexpectedly
git【报错】fatal: the remote end hung up unexpectedly
|
开发工具 git Python
Git安装Kivy出现Fatal Error: GLES2/gl2.h: No such file or directory
Git安装Kivy出现Fatal Error: GLES2/gl2.h: No such file or directory
190 0
|
开发工具 git
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
176 0