glog总是创建两个文件,其内容几乎相同

时间:2016-02-04 11:55:05

标签: glog

我的测试代码一击:

std::string strLogPath = "d:/logtest/";
google::InitGoogleLogging("test1");
FLAGS_log_dir = strLogPath;
FLAGS_stderrthreshold = google::GLOG_INFO;
FLAGS_minloglevel = google::GLOG_INFO;
//FLAGS_colorlogtostderr = true;

std::string strLogPath1 = "d:/logtest/L";
google::SetLogDestination(google::GLOG_INFO, strLogPath1.c_str()); 
google::SetLogDestination(google::GLOG_ERROR, strLogPath1.c_str());
google::SetLogDestination(google::GLOG_WARNING, strLogPath1.c_str());
google::SetLogDestination(google::GLOG_FATAL, strLogPath1.c_str());

LOG(INFO) << "infoinfo";
Sleep(1000);
LOG(WARNING) << "wwwww";
LOG(WARNING) << "wwwww";
LOG(ERROR) << "eeeeee";
Sleep(2000);
//LOG(FATAL) << "ffffff";
LOG(WARNING) << "wwwww";
LOG(WARNING) << "wwwww";
LOG(WARNING) << "wwwww";
google::ShutdownGoogleLogging();

我有两个日志文件,一个文件包含所有消息(INFO,WARNING和ERROR),另一个包含所有WARNING和ERROR消息,但没有INFO。这与我的期望不同。我希望一个文件中的所有消息,并且不喜欢WARNING和ERROR消息在不同的文件中出现两次。 如果有人能告诉我解决方案,我们将不胜感激。 非常感谢提前。

1 个答案:

答案 0 :(得分:0)

您可能已经为您的问题找到了解决方案,但无论如何我都会将此发布给其他用户。

据我所知,glog不是为登录一个文件而设计的。因此,您只能使用glog来执行您想要的操作。

但是,还有其他解决方案可以解决您的问题。

首先:编写自己的小型日志库。这不是非常复杂,是一个很棒的编程培训;)

:仅适用于* nix。使用logtostderr-Flag激活glog中的stderr日志记录,并将stderr的输出重定向到所需的日志文件。

FLAGS_logtostderr=1;
LOG(INFO) << "Info";
LOG(WARNING) << "Warning";
LOG(ERROR) << "Error";

并在shell上:./MyProg 2>logFile

上次:保持原样并删除您不需要的日志文件。在您的程序中使用c / c ++或调用system()