写点什么

c++ 使用 Glog 按照功能模块划分日志文件。同时,日志文件中也存有各个对应的等级,如 debug、info 等日志等级

作者:linux大本营
  • 2023-04-27
    湖南
  • 本文字数:798 字

    阅读完需:约 3 分钟

使用 Glog,可以通过设置不同的输出目录和文件名来按照功能模块划分日志文件,并且每个日志文件中都会存储对应的日志等级。


首先,需要在程序中初始化 Glog,并设置日志等级和输出目录:


#include <glog/logging.h>
int main(int argc, char* argv[]) { google::InitGoogleLogging(argv[0]); FLAGS_log_dir = "./logs"; FLAGS_alsologtostderr = true; FLAGS_minloglevel = google::INFO; ...}
复制代码


上述代码将日志输出到当前目录下的 logs 子目录中,并设置了最小日志等级为 INFO。如果想要按照功能模块划分日志文件,可以在不同的位置调用google::SetLogDestination()函数,指定不同的输出目录和文件名,并在文件名中包含对应的功能模块名称和日志等级。


例如,以下代码将module1模块的 INFO 级别的日志输出到 logs/module1_info.log 文件中,DEBUG 级别的日志输出到 logs/module1_debug.log 文件中:


google::SetLogDestination(google::INFO, "./logs/module1_info.log");google::SetLogDestination(google::DEBUG, "./logs/module1_debug.log");
复制代码


注意,这些日志文件会包含所有等级大于等于指定等级(INFO 和 DEBUG)的日志信息。如果想要限制只输出特定等级的日志,可以使用google::AddLogSink()函数,指定一个过滤器来筛选日志记录。例如,以下代码只将module2模块的 WARNING 级别的日志输出到 logs/module2_warning.log 文件中:


google::AddLogSink([](const google::LogEntry& entry) -> bool {  return entry.level() >= google::WARNING && entry.file().find("module2") != std::string::npos;}, google::GLOG_WARNING, "./logs/module2_warning.log");
复制代码


需要注意的是,在日志文件名中包含功能模块名称和日志等级可以帮助我们更好地理解每个日志文件的作用,但这种方式可能会导致生成大量的日志文件,因此需要谨慎使用。


相关技术视频教程:c/c++ linux服务器开发/后台架构师免费学习地址

c/c++后端技术交流群:579733396

用户头像

还未添加个人签名 2020-11-26 加入

C/C++linux服务器开发群 812855908

评论

发布
暂无评论
c++ 使用Glog 按照功能模块划分日志文件。同时,日志文件中也存有各个对应的等级,如 debug、info等日志等级_c++_linux大本营_InfoQ写作社区