概述
G3log 是一个开源、支持跨平台的异步 C++ 日志框架,支持自定义日志格式。基于 g2log 构建,提升了性能,支持自定义格式。
G3log 主要特性:
- 日志和契约式设计框架
- 异步调用
- 线程安全
- 队列式日志
- 捕获和记录 SIGSEGV 以及其他严重的信号
- 在 Linux/OSX 上严重的信号会生成堆栈记录
- G3log 跨平台,支持 Windows, Linux 和 OSX
链接:https://github.com/KjellKod/g3log
编译安装
从github上下载 g3log 源码
准备工作
1 | # cd g3log |
编译
1 | # cmake -DCMAKE_BUILD_TYPE=Release .. |
当前g3log默认使用的是c++14,若系统用的是c++11,则把目录下所有的c++14都替换为c++11后即可;
安装
1 | # sudo make install |
使用g3log
代码示例
文件:g3log_tst.cc
1 |
|
编译运行
1 | # g++ -std=c++11 -Wl,-rpath,/usr/local/lib -lg3logger -og3log_tst g3log_tst.cc |
查看log文件内容:
1 | # cat /tmp/g3log_file.g3log.20171011-145651.log |
g3log的动态log level
g3log支持dynamic logging level,默认是关闭的,若需要使用,在编译g3log时打开。
1 | # cmake -DCMAKE_BUILD_TYPE=Release -DUSE_DYNAMIC_LOGGING_LEVELS=ON ../ |
在文件 g3log/loglevels.hpp
里有各个log level的定义:
1 | namespace g3 { |
设置log level的定义为:
1 | namespace log_levels { |
代码示例
文件:g3log_tst.cc
1 |
|
编译运行
1 | # g++ -std=c++11 -Wl,-rpath,/usr/local/lib -lg3logger -og3log_tst g3log_tst.cc |
查看log文件输出内容如下,可以看出并没有DEBUG级别的log输出:
1 | # cat /tmp/g3log_file.g3log.20171011-162539.log |
参考
g3log还有很多别的特性,有需要的朋友可以详细研究下代码,很多使用示例也可以在源码里的g3log/example/
和test_unit/
目录里找到,cmake和代码都可以参考之。