答案实际上是在库下载中包含的FAQ文件中.我有一个固定的后端DLL,其中包含以下标题,我可以在日志文件中包含类,函数和行号.
#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
Run Code Online (Sandbox Code Playgroud)
这里发生的是你必须在包含trace.h之前重新定义PANTHEIOS_TRACE_PREFIX,这就是我在上面所示的内容.包含其他代码行只是为了向您展示#define的去向.抱歉延迟回复.如果您希望我可以在我的博客上发布一个固定后端DLL项目的下载,任何人都可以在他们的解决方案中使用简单的基于文件的日志记录.如果您对该项目感兴趣,请发表评论
2010年2月28日上午12:53 CST:以下是FAQ的问题供大家参考:
Q9:"Pantheios是否提供了一个配置,产生包含包含函数的记录消息,相当于:
log(informational, __FUNCTION__, ": my message");
Run Code Online (Sandbox Code Playgroud)
无需编写(或一些检查编译器支持的包装器)."[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>
Run Code Online (Sandbox Code Playgroud)
请注意,定义必须在包含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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1210 次 |
| 最近记录: |