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

时间:2011-07-04 16:50:21

标签: 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);
}

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

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

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

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

#include <glog/logging.h>
#include <**gflags**/gflags.h>
...
FLAGS_logbuflevel=-1;

1 个答案:

答案 0 :(得分:3)

我在glog中使用gflags,如果你运行--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