跳到正文
Yayin Story Studio Yayin Story Studio 项目文档

Visindigo::General::LogCenter Class

class Visindigo::General::LogCenter

LogCenter是日志记录器管理器,用于管理全局日志对象并处理日志消息. 详情...

头文件: #include <General/LogCenter.h>
自以下版本: Visindigo 0.13.0

公开成员函数

(自 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 开始支持。