是否有一种"内置方式"来记录glog到程序崩溃的所有内容?

NoS*_*tAl 5 c++ logging

我有兴趣使用一些日志记录来帮助我检测代码中的潜在问题,并检测程序崩溃的位置.我的问题是我使用的lib(google glog)如果它们在程序崩溃之前发生,则不会记录这些内容.所以我尝试做这样的事情(这是3个参数的模板):

mutex logMtx;
template<class T, class U, class V>
void mutexLOG_INFO(T t, U u, V v)
{
    stringstream ss;
    ss<<t;
    ss<<u;
    ss<<v;
    LOG(INFO)<<ss.str();
    mutex::scoped_lock sl(logMtx);
    google::FlushLogFiles(0);
}
Run Code Online (Sandbox Code Playgroud)

它适用于AFAIK(来自我的测试),但你可以看到它不是很好,因为我需要为每个级别(INFO,WARNING ..)和每个参数数量做自己的功能.我也讨厌重新发明轮子.

那么在LOG之后有没有办法告诉glog​​每次刷新?

PS我知道这是g-log,而不是g-db(oops,取名:)但我更喜欢选择打印好我的STL数据,我只使用gdb来检测死亡的地方.

编辑:SO再次证明它是一个很好的信息来源:

#include <glog/logging.h>
#include <**gflags**/gflags.h>
...
FLAGS_logbuflevel=-1;
Run Code Online (Sandbox Code Playgroud)

mas*_*ase 3

我将 gflags 与 glog 一起使用,如果您运行 --help 选项 logbuflevel 可能就是您正在寻找的。

    -logbuflevel (Buffer log messages logged at this level or lower (-1 means
  don't buffer; 0 means buffer INFO only; ...)) type: int32 default: 0
Run Code Online (Sandbox Code Playgroud)