Visindigo::General::LogCenter Class
class Visindigo::General::LogCenterLogCenter是日志记录器管理器,用于管理全局日志对象并处理日志消息. 详情...
| 头文件: | #include <General/LogCenter.h> |
| 自以下版本: | Visindigo 0.13.0 |
- 所有成员列表(包含继承成员)
- LogCenter 是该集合的一部分:VDebug日志系统子模块.
公开成员函数
(自 Visindigo 0.13.0 引入) | ~LogCenter() |
(自 Visindigo 0.13.0 引入) void | finalSave() |
(自 Visindigo 0.13.0 引入) void | generateCrashReport(const Visindigo::General::Exception &ex) |
(自 Visindigo 0.15.2 引入) QString | generateHardwareInfo(bool debugOutput = true, bool containsNetworkInfo = false) |
(自 Visindigo 0.13.0 引入) void | msgHandlerLog(Visindigo::General::LoggerMsgHandler *handler) |
(自 Visindigo 0.13.0 引入) void | setGlobalLogLevel(Visindigo::General::Logger::Level level) |
静态公开成员
(自 Visindigo 0.13.0 引入) Visindigo::General::LogCenter * | getInstance() |
详细说明
此类是VDebug的核心类,用于管理Logger实例并处理日志消息的输出。
在Visindigo开发中,大部分情况下可以直接取代QDebug使用。如果直接比较
vgDebug << "log" qDebug() << "log"
则在VDebug确实需要QDebug约120%~200%的耗时,但这么比较并不公平,因为VDebug提供了更多的功能, 例如日志级别、日志文件输出、日志重定向等,这些功能的实现需要额外的处理和资源。如果将VDebug与 经过了相当设置的QDebug相比(即使用Qt的日志格式、输出重定向等功能之后),则二者耗时基本相当。
VDebug和QDebug在结构上略有不同:
- QDebug使用QDebug类来承接日志消息,而VDebug则是LoggerMsgHandler类。
- QDebug实例可以使用QMessageLogger类获取,而VDebug则是通过Logger类获取。
- QMessageLogger使用不同的QMessageLoggingCategory构造QDebug来区分不同的日志命名空间, 而VDebug则是通过Logger类的实例来区分不同的日志命名空间。
成员函数文档
[noexcept, since Visindigo 0.13.0] LogCenter::~LogCenter()
析构函数
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void LogCenter::finalSave()
将日志缓冲区的内容保存到日志文件中。
此函数强制将日志缓冲区的内容写入日志文件中。 通常情况下,日志会自动定期保存,但用户也可以手动调用此函数以确保日志被保存。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void LogCenter::generateCrashReport(const Visindigo::General::Exception &ex)
生成崩溃报告。 ex 指向Exception对象的引用,包含了崩溃的相关信息。 此函数用于生成崩溃报告文件,包含了崩溃时的堆栈信息和其他相关数据。 这个函数由VIApplication在捕获到会导致程序崩溃的异常时自动调用。
这个函数在所有平台上可用,但只能处理Visindigo::General::Exception类型的异常,以及 已经被充分转换为该类型的std异常。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.15.2] QString LogCenter::generateHardwareInfo(bool debugOutput = true, bool containsNetworkInfo = false)
debugOutput 是否将生成的硬件信息报告输出到调试控制台。 containsNetworkInfo 是否包含网络接口信息。
return 生成硬件信息报告。
如果 debugOutput 为true,则在返回相关信息的同时 也会将报告输出到调试控制台。报告内容包括操作系统版本、内核版本、CPU架构、网络接口信息等。
这个函数默认在程序启动,以及崩溃的时候被自动调用,以生成硬件信息报告。 用户也可以手动调用此函数以获取当前的硬件信息。
Warning: 如果启用 containsNetworkInfo 选项,则报告中将包含网络接口的详细信息, 这可能会暴露用户的隐私信息(如MAC地址、IP地址等)。请谨慎使用此选项。 在生成崩溃日志时,会启用 containsNetworkInfo 选项以提供更全面的系统信息,但在其他情况下默认不启用以保护用户隐私。
这个function 从 Visindigo 0.15.2 开始支持。
[static, since Visindigo 0.13.0] Visindigo::General::LogCenter *LogCenter::getInstance()
return LogCenter单例对象的指针。
这是Visindigo单例类getInstance()函数的一个特例。其他单例类的getInstance()函数均会在实例不存在时创建它们。请注意区分。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void LogCenter::msgHandlerLog(Visindigo::General::LoggerMsgHandler *handler)
处理日志消息。 handler 指向LoggerMsgHandler对象的指针,包含了日志消息的相关信息。
此函数由LoggerMsgHandler对象在其析构函数中自动调用,用于将日志消息输出到控制台和日志文件中。
强烈不推荐用户手动调用此函数。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void LogCenter::setGlobalLogLevel(Visindigo::General::Logger::Level level)
设置全局日志级别阈值。 level 全局日志级别阈值,低于此级别的日志将不会被输出。
此函数允许用户动态调整全局日志级别阈值。
这个function 从 Visindigo 0.13.0 开始支持。