|
BIMHome v1.0.0
BIMHome接口文档说明
|
简单的基于标签的日志和计时辅助宏和函数。
BIMHome Base::Console() 能够输出到不同的目标,并且对不同类型日志有一些基本的启用/禁用控制。然而, 对于各种 FC 模块来说,却没有一种简单的方式来使用日志设施。这一组辅助宏和函数旨在提供一个统一的日志(和计时) 该接口主要为 C++ 代码设计。Python 代码也可以利用日志级别控制接口获得一些好处。开发者现在可以在源代码中永久激活他们的日志代码, 而不会影响性能,并且可以使用 Python 控制台动态地开启/关闭日志,用于调试目的,即使在发布构建中也是如此。
提供了一组宏来简化基于标签的日志使用。所有宏都定义在 <Base/Console.h> 中。在你的 C++ 源代码开头, 你需要使用以下代码初始化你选择的标签的日志级别,
在多个文件中使用相同的标签进行日志级别控制是有意义的。如果你想要在同一个源文件中使用多个标签,请查看 自定义部分。
预定义的日志级别为,
日志级别整数值越大,优先级越低。还有一个特殊的日志级别,
实际上,任何负的日志级别行为都是一样的,这是为了那些用户尚未配置的标签。实际应用的日志级别由 Base::Console().SetDefaultLogLevel() 控制。 Python 开发者/最终用户可以通过调用以下代码配置默认日志级别:
其中 level 是一个字符串,值为 Error, Warning, Message, Log, Trace 或一个整数值。默认情况下,在发布构建中,默认日志级别是 FC_LOGLEVEL_MSG, 在调试构建中是 FC_LOGLEVEL_LOG。
Python 代码可以调用 BIMHome.setLogLevel(tag,level) 来配置任何其他标签的日志级别,以及 BIMHome.getLogLevel(tag),它只输出整数日志级别。
你可以通过向 FC_LOG_LEVEL_INIT() 传递额外的参数来微调日志的输出方式。所有额外的参数都是布尔值,如下所示,连同它们的默认值。
你也可以通过在实际日志输出宏之前更改这些变量来动态修改日志样式。更多详情请查看 自定义部分。
注意使用 'refresh' 选项。其当前实现调用了 QCoreApplication::sendPostedEvent(),这可能会导致一些意外行为, 特别是在析构函数中调用时。
实际的日志宏是
日志宏对应于现有的 Base::Console() 输出函数,FC_TRACE 使用 Base::Console().Log(),与 FC_LOG 相同。这些宏会检查在 FC_LOG_LEVEL_INIT 中定义的日志级别, 以决定是否打印日志。msg 应该是一个 C++ 流式表达式。默认情况下,会自动追加换行符。
这一组宏用于帮助 C++ 代码计时耗时的操作。 示例:
这将在控制台输出类似以下内容:
每次调用 FC_TIME_LOG 时,它都会计算此次调用与上一次 FC_TIME_LOG 或 FC_TIME_INIT 之间的时长。 时间变量 t 将更新为当前时间。你也可以使用 FC_TIME_MSG, FC_TIME_TRACE,类似于 FC_MSG 和 FC_TRACE。
要分阶段计时操作,
将输出类似以下内容:
要在多个函数中计时操作,
你也可以像往常一样使用 FC_DURATION_MSG, FC_DURATION_TRACE。
如果你只使用这里提供的宏来进行计时,那么可以通过在包含 App/Console.h 之前定义 FC_LOG_NO_TIMING 来将整个计时代码编译出去。
大部分日志设施都是通过宏暴露的。本节简要介绍它们在幕后是如何实现的,以防你想要进行自定义。新增了一个函数 GetLogLevel(tag) 到 Base::Console() 以便 C++ 开发者查询任意字符串标签的日志级别。该函数返回一个指向整数的指针,该整数表示日志级别。Python 开发者或最终用户可以使用