您的位置:首页 > 编程语言 > C语言/C++

优秀开源项目之五:C++日志框架 Google Glog

2017-11-16 10:48 761 查看
Google Glog 是一个C++语言的应用级日志记录框架,提供了 C++ 风格的流操作和各种助手宏。可以使用google的glog开源库进行日志输出。工程如图:

libglog是动态库,logging_unittest针对libglog的测试。libglog_static是静态库,logging_unittest_static针对libglog_static的测试。logging_unittest和logging_unittest_static是同一项目。
暂不讨论Glog的原理,直接分析如何使用它。主要的代码:[cpp] view plain copyint main(int argc, char **argv) {  
#ifdef HAVE_LIB_GFLAGS  
  ParseCommandLineFlags(&argc, &argv, true);  
#endif  
  
  // Test some basics before InitGoogleLogging:  
  //初始化捕捉流  
  CaptureTestStderr();  
  //根据日志的级别进行输出  
  LogWithLevels(FLAGS_v, FLAGS_stderrthreshold,  
                FLAGS_logtostderr, FLAGS_alsologtostderr);  
  //模拟参数  
  LogWithLevels(0, 0, 0, 0);  // simulate "before global c-tors"  
  
  //获得信息  
  const string early_stderr = GetCapturedTestStderr();  
    //初始化  
  InitGoogleLogging(argv[0]);  
 //运行指定的基准  
  RunSpecifiedBenchmarks();  
  
  FLAGS_logtostderr = true;  
  //空函数  
  InitGoogleTest(&argc, argv);  
#ifdef HAVE_LIB_GMOCK  
  InitGoogleMock(&argc, argv);  
#endif  
  
  // so that death tests run before we use threads  
  CHECK_EQ(RUN_ALL_TESTS(), 0);  
    //初始化捕捉流  
  CaptureTestStderr();  
  
  // re-emit early_stderr  输出消息  
  LogMessage("dummy", LogMessage::kNoLogPrefix, GLOG_INFO).stream() << early_stderr;  
  
  //输出信息 信息包括警告信息和错误信息  
  TestLogging(true);  
  TestRawLogging();  
  TestLoggingLevels();  
  TestLogString();  
  TestLogSink();  
  TestLogToString();  
  TestLogSinkWaitTillSent();  
  TestCHECK();  
  TestDCHECK();  
  TestSTREQ();  
  
  // TODO: The golden test portion of this test is very flakey.  
  EXPECT_TRUE(  
      MungeAndDiffTestStderr(FLAGS_test_srcdir + "/src/logging_unittest.err"));  
  
  FLAGS_logtostderr = false;  
  
  TestBasename();  
  TestSymlink();  
  TestExtension();  
  TestWrapper();  
  TestErrno();  
  TestTruncate();  
  
  ShutdownGoogleLogging();  
  
  fprintf(stdout, "PASS\n");  
  return 0;  
}  
深夜了,该洗洗睡了,函数就不帖出来了,想研究的下载源码包吧!学习的目的是成熟!~
源码包(可直接编译)
原文链接:http://blog.csdn.net/banketree/article/details/7971737
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c 日志 Google Glog