我有兴趣使用一些日志记录来帮助我检测代码中的潜在问题,并检测程序崩溃的位置.我的问题是我使用的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)
我将 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)