初学者:如何使用 Pantheios 日志 API 库替代 #ifdef DEBUG?如何定义SEVLEVEL?

2024-03-06

我想在动态搜索算法中记录很多事件(例如,有关收敛到全局最优的信息)。此日志记录应该有一个开关来关闭/打开它。现在有很多可能性可以实现这一目标:

  • 实现算法的日志版本和非日志版本 -> 冗余
  • 使用宏 -> 丑陋而且不安全
  • 使用 C++ 日志库(或者:使用日志库功能范围的 1%)。

我决定使用潘泰奥斯,特别是因为所提出的性能声明(不想因为此日志记录而损失太多性能,这仅在开发中需要)。我必须承认,我不需要这个库的太多功能,但我认为我会是一种更好/更安全的使用方式。也许会有一个我不知道的更合适的替代方案(我只需要用于日志记录的编译时决策 - >不知道是否有为此目的设计的日志库)。

编译、安装并最终链接后(手动链接没有成功,但使用scons建筑工具;使用 gcc -> 显式链接),我想尝试一个小例子。

让我们将其简化为如下所示:

#include "pantheios/pantheios.hpp"
#include "pantheios/frontends/stock.h"
const PAN_CHAR_T PANTHEIOS_FE_PROCESS_IDENTITY[] = "pantheios_test";    // specify process identity

int main()
{
    pantheios::log_ALERT("alert-event");
    pantheios::log_DEBUG("debug-event");
    pantheios::log_INFORMATIONAL("just information");
    return 1;
}

链接是通过以下文件完成的:

LIBS=['pantheios.1.core.gcc44', 'pantheios.1.be.fprintf.gcc44', 'pantheios.1.bec.fprintf.gcc44', 'pantheios.1.fe.all.gcc44', 'pantheios.1.util.gcc44']

现在简单的问题是:如何关闭/打开控制台输出?如何选择给予后端的严重级别?

通过查看文档,我发现了许多具有严重级别的函数,但这些函数会自动调用一次以进行初始化。我知道严重级别的动态变化是可能的。我不确切知道在哪里更改这些设置。我认为它们应该位于前端组件中。链接到“fe_all”是否已经决定了哪个级别被记录,哪个级别不被记录?

这应该相对容易,因为就我而言,我只需要关于登录/关闭的编译时决定。

感谢您的帮助。

Sascha


链接到“fe_all”是否已经决定了哪个级别被记录,哪个级别不被记录?

简短的回答:是的。

fe.all 启用所有严重级别:记录“所有”消息。

如果您想要更好的控制,请尝试 fe.simple。默认情况下,它会打开调试版本中的所有内容以及发布版本中除 DEBUG 和 INFO 之外的所有内容。您可以随时更改阈值 - 在调试或发布中 - 通过调用 fe.simple 标头(pantheios/frontends/fe.simple.h, iirc)中的函数 pantheios_fe_simple_setSeverityThresdhold() (或类似的东西)。

请注意,Pantheios 被描述为日志记录API图书馆。我认为其目的是通过现有的“丰富”日志库提供 API、初始化控制和输出。它提供“库存”前端和后端,为用户提供了便利:(i) 快速上手,以及 (ii) 简单的要求(您的程序可能符合这些要求)。

顺便说一句,我认为 Pantheios 论坛项目现场 http://www.sourceforge.net/projects/pantheios得到了很好的支持,因此您可能想在那里和这里发布问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初学者:如何使用 Pantheios 日志 API 库替代 #ifdef DEBUG?如何定义SEVLEVEL? 的相关文章

随机推荐