我有兴趣使用一些日志记录来帮助我检测代码中的潜在问题,并检测程序崩溃的位置。我的问题是我使用的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;
答案 0 :(得分:3)
我在glog中使用gflags,如果你运行--help,那么选项logbuflevel可能就是你要找的。 p>
-logbuflevel (Buffer log messages logged at this level or lower (-1 means
don't buffer; 0 means buffer INFO only; ...)) type: int32 default: 0