优秀开源项目之五: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
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
- 开源项目之C++日志框架 Google Glog
- google-glog:开源c++轻量级日志库
- 开源C++单元测试框架Google Test的简单使用
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之五 - 死亡测试
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之六 - 运行参数
- (转)玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之六 - 运行参数
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之七 - 深入解析gtest
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest
- 玩转Google开源C++单元测试框架Goo…
- 玩转Google开源C++单元测试框架Google Test系列(gtest)(总)
- iOS开源项目之日志框架CocoaLumberjack
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之八 - 打造自己的单元测试框架
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之七 - 深入解析gtest
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之七 - 深入解析gtest
- 玩转Google开源C++单元测试框架Google Test系列(gtest)(总)
- Google开源C++单元测试框架Google Test(gtest)在C++Builder(xe5)下的使用-1
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest