代码之家  ›  专栏  ›  技术社区  ›  sascha

初学者:如何使用Pantheios日志API库替代ifdef DEBUG?如何定义服务级别?

  •  3
  • sascha  · 技术社区  · 15 年前

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

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

    我决定用 泛神论 ,尤其是因为所做的性能声明(不希望因为这种日志记录而损失太多性能,这只是开发中需要的)。我不得不承认,我不需要这个库的很多功能,但我认为我会是一个更好/更安全的使用它的方式。也许会有一个我不知道的更好的选择(我只需要为日志记录做编译时的决定->不知道是否有为此目的设计的日志库)。

    编译、安装并最终链接之后(手动链接没有成功,但是 烤饼 构建工具;使用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']

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

    查阅文档后,我发现许多函数都具有严重性级别,但这些函数在初始化时会自动调用一次。我知道严重程度的动态变化是可能的。我不知道具体在哪里更改这些设置。我认为它们应该在前端组件中。链接到“所有人”已经是某种决定哪个级别被记录,哪个级别不是?

    这应该相对容易,因为在我的例子中,我只需要一个关于登录/注销的编译时决策。

    谢谢你的帮助。

    萨沙

    1 回复  |  直到 15 年前
        1
  •  7
  •   dcw    15 年前

    链接到“所有人”已经是某种决定哪个级别被记录,哪个级别不是?

    简短回答:是的。

    全部启用所有严重级别:“所有”会议都被记录。

    如果你想要更好的控制,试试fe.simple。默认情况下,它会打开调试版本中的所有内容,以及除了发布版中的调试和信息之外的所有内容。通过调用fe.simple头文件(pantheios/frontends/fe.simple.h,iirc)中的pantheios_fe_simple_seteveritythresdhold()函数(或类似的函数),可以随时更改阈值(在调试或发布中)。

    注意泛神论被描述为一种日志 美国石油学会 图书馆。我认为它的目的是提供一个API、初始化控制和在现有的“富”日志库上的输出。它提供“股票”前端和后端是一个方便的用户(i)快速跟上,和(ii)简单的要求(你的程序可能有资格)。

    顺便说一下,我想泛神论论坛 project site 很好的支持,所以你可能想在这里和那里发布问题。

    推荐文章