我想在动态搜索算法中记录很多事件(例如,关于收敛到全局最优的信息)。此日志记录应该有一个开关来关闭/打开它。现在有很多可能性来实现这一目标:
- 实现算法的日志版本和非日志版本 -> 冗余
- 使用宏 -> 丑陋且不安全
- 使用 c++ 日志库(或:使用日志库功能范围的 1%)。
我决定使用Pantheios,特别是因为提出了性能声明(不想因为这种日志记录而损失太多性能,这仅在开发中需要)。我不得不承认,我不需要这个库的太多功能,但我认为我会是一种更好/更安全的使用方式。也许会有一个我不知道的更合适的替代方案(我需要编译时决策只用于日志记录->不知道是否有为此目的设计的日志记录库)。
在编译、安装和最后链接之后(手动链接没有成功,但使用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”是否已经某种决定哪个级别被记录广告哪个级别不是?
这应该相对容易,因为在我的情况下,我只需要在编译时做出关于登录/注销的决定。
谢谢你的帮助。
萨沙