我刚开始使用 Pantheios它感觉真的像是一个很棒的日志库!甚至可能是 C++ 最伟大的一个!恭喜作者!
但是,我在文档和所有论坛帖子中都找不到任何关于如何在日志中包含调用类和行号的信息。
我使用 be.file 作为后端,我定义了自定义前端,查看 fe.simple 示例。这与 PANTHEIOS_EXTERN_C const char PANTHEIOS_FE_PROCESS_IDENTITY[]
有关,还是我走错了路?
最佳答案
这个问题的答案实际上在库下载中包含的 FAQ 文件中。我有一个固定后端 DLL,其中包含以下 header ,我能够在日志文件中包含类、函数和行号。
#include <pantheios/pantheios.hpp>
#include <pantheios/frontends/fe.N.h>
//#include <pantheios/frontends/fe.simple.h>
#ifndef PANTHEIOS_INCL_PANTHEIOS_H_TRACE
#define PANTHEIOS_TRACE_PREFIX __FILE__ "(" PANTHEIOS_STRINGIZE(__LINE__) "): " __FUNCTION__ ": "
#endif /* PANTHEIOS_INCL_PANTHEIOS_H_TRACE */
#include <pantheios/trace.h>
#include <pantheios/inserters.hpp>
#include <pantheios/backends/bec.file.h> // be.file header
这里发生的事情是您必须在包含 trace.h 之前重新定义 PANTHEIOS_TRACE_PREFIX,这就是我在上面显示的内容。包含其他代码行只是为了向您展示 #define 的去向。很抱歉延迟回复。如果您愿意,我可以在我的博客上发布一个带有固定后端 DLL 项目的下载,任何人都可以在他们的解决方案中使用该项目来进行简单的基于文件的日志记录。如果您对该项目有任何兴趣,请发表评论
2010 年 2 月 28 日中午 12:53 更新:常见问题解答中的问题供您引用:
问题 9:“Pantheios 是否提供产生日志消息的配置? 包含包含函数,相当于:
log(informational, __FUNCTION__, ": my message");
无需编写(或检查编译器支持的包装器)。”[2008 年 3 月 15 日]
A9:
你需要#define PANTHEIOS_TRACE_PREFIX 到你想要的。默认
它是 __FILE__ "(" PANTHEIOS_STRINGIZE(__LINE__) "): "
, 这给出了
格式 <file>(<line>):
要包含该函数,假设您希望它具有 <file>(<line>): <func>:
格式.为此,您需要按如下方式定义它:
#include <pantheios/pantheios.h>
#define PANTHEIOS_TRACE_PREFIX __FILE__ " " PANTHEIOS_STRINGIZE(__LINE__) ": " __FUNCTION__ ": "
#include <pantheios/trace.h>
请注意,定义必须出现在包含 pantheios/trace.h 之前。因此,更安全的做法如下:
/* File: myPantheiosRootHeader.h */
#include <pantheios/pantheios.h>
#ifdef PANTHEIOS_INCL_PANTHEIOS_H_TRACE
# error pantheios/trace.h must not be included before myPantheiosRootHeader.h
#endif /* PANTHEIOS_INCL_PANTHEIOS_H_TRACE */
#define PANTHEIOS_TRACE_PREFIX __FILE__ " " PANTHEIOS_STRINGIZE(__LINE__) ": " __FUNCTION__ ": "
#include <pantheios/trace.h>
关于c++ - 如何使用 Pantheios 在日志中包含调用类和行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2343821/