当前位置: 首页> 教育> 培训 > 个人网站怎么建_南京网站设计网站建设_百度用户服务中心人工24小时电话_微信推广链接怎么制作

个人网站怎么建_南京网站设计网站建设_百度用户服务中心人工24小时电话_微信推广链接怎么制作

时间:2025/7/11 8:23:39来源:https://blog.csdn.net/weixin_42964413/article/details/145254624 浏览次数:1次
个人网站怎么建_南京网站设计网站建设_百度用户服务中心人工24小时电话_微信推广链接怎么制作

参考:
C++ glog使用教程与代码演示
C++第三方日志库Glog的安装与使用超详解
GLOG从入门到入门
glog 设置日志级别_glog C++版本代码分析

文章目录

  • 日志等级
  • 自定义消息创建
    • 使用宏定义

日志等级

在 glog 中,日志的严重性是通过 LogSeverity 来区分的,glog 默认提供了 4 个等级:

  1. google::INFO (值为 0)
  2. google::WARNING (值为 1)
  3. google::ERROR (值为 2)
  4. google::FATAL (值为 3)

自定义消息创建

就20250121搜集到的资料来看glog目前不支持自定义等级消息等级,但是可以通过添加标识符,宏定义,重写glog中的send函数实现。

使用宏定义

可以定义一个宏来封装日志记录操作,同时在宏中添加特定的标签或前缀。
示例代码

#include <glog/logging.h>
#include <sstream>
#include <ctime> // For struct tm#include "frontend/universal/add_dialog.h"// 自定义日志接收器
class LogSink : public google::LogSink
{
public:LogSink(MessageBoxDialog *widget) : widget_(widget) {}void send(google::LogSeverity severity, const char *full_filename,const char *base_filename, int line,const struct ::tm *tm_time,const char *message, size_t message_len) override;private:MessageBoxDialog *widget_;
};void LogSink::send(google::LogSeverity severity, const char *full_filename, const char *base_filename, int line,const ::tm *tm_time, const char *message, size_t message_len)
{// 将日志内容包装为 std::stringstd::string logMessage(message, message_len);// 使用 stringstream 获取日志消息内容std::stringstream ss;// 构造日志输出格式ss << "[" << base_filename << ":" << line << "] ";ss << "[" << std::put_time(tm_time, "%Y-%m-%d %H:%M:%S") << "] ";// 根据 severity 判断日志类型if (severity == google::GLOG_INFO){ss << "[INFO] ";}else if (severity == google::GLOG_WARNING){ss << "[WARNING] ";}else if (severity == google::GLOG_ERROR){ss << "[ERROR] ";}else if (severity == google::GLOG_FATAL){ss << "[FATAL] ";}// 检查日志消息中是否包含特定标签if (logMessage.find("[COMMUNICATION]") != std::string::npos){ss << "[COMMUNICATION] ";}ss << logMessage;// 使用 Qt 的事件机制将日志更新请求发送到主线线QMetaObject::invokeMethod(widget_, "appendLog", Qt::QueuedConnection, Q_ARG(QString, QString::fromStdString(ss.str())));
}// 定义一个宏来封装日志记录操作
#define LOG_COMMUNICATION_INFO(msg) LOG(INFO) << "[COMMUNICATION] " << msgint main(int argc, char *argv[])
{QApplication app(argc, argv);MessageBoxDialog widget;widget.show();google::InitGoogleLogging(argv[0]);// 注册自定义日志接收器google::AddLogSink(new LogSink(&widget));// 使用自定义宏记录通信相关日志LOG_COMMUNICATION_INFO("This is a communication info message.");// 使用其他日志等级LOG(INFO) << "This is an info message.";LOG(WARNING) << "This is a warning message.";LOG(ERROR) << "This is an error message.";LOG(FATAL) << "This is a fatal message.";google::ShutdownGoogleLogging();return app.exec();
}

在这个示例中,我们定义了一个宏LOG_COMMUNICATION_INFO来封装日志记录操作,并在日志消息中添加了[COMMUNICATION]标签,从而实现对特定日志信息的区分。
总结
通过在日志消息中添加特定的标签或前缀,可以在不改变日志等级的情况下,实现对特定日志信息的区分。这种方法简单且有效,不需要修改glog库的源码,也不会引入新的日志等级值导致程序崩溃。

关键字:个人网站怎么建_南京网站设计网站建设_百度用户服务中心人工24小时电话_微信推广链接怎么制作

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: