winston 发表于 2011-12-9 19:29:16

C/C++ Pantheios诊断日志API库 |akof1314

Pantheios是一个开源的C/C++诊断日志API库,提供一个100%类型安全,效率,通用性和可扩展性的最佳组合。
Pantheios网址:http://pantheios.sourceforge.netSTLSoft网址:http://stlsoft.org/         
1.下载pantheios、STLSoft
2.解压STLSoft到目录,把此目录加入到环境变量中,用如下命令:
C:\>SET STLSOFT=E:\项目\公共组件\stlsoft-1.9.111
3.进入D:\Program Files\Microsoft Visual Studio 9.0\VC\bin目录,运行vcvars32.bat,为nmake设置环境变量(若已设置,则忽略此步);
4.用CMD命令进入E:\项目\公共组件\pantheios-1.0.1-beta213\build\vc9目录,键入nmake /f makefile,然后等待编译;
5.编译完成后,LIB文件夹会生成许多lib文件。

下面测试:
1.打开VC2008,新建一个Win32控制台应用程序,名称TestLog,其余默认设置;
2.菜单→"项目"→"属性"→"常规"→"字符集",设置"使用多字节字符集";
3.菜单→"项目"→"属性"→"C/C++"→"常规"→"附加包含目录",加入"...\pantheios-1.0.1-beta213\include"目录和"...\stlsoft-1.9.111\include"目录,"链接器"→"常规"→"附加库目录",加入"...\pantheios-1.0.1-beta213\lib";
4.加入以下代码:

01
02
03
04
05
06
07
08
09
10
11
12
13
#include "stdafx.h"
#include <pantheios/pantheios.hpp>
#include <pantheios/implicit_link/core.h>
#include <pantheios/implicit_link/fe.simple.h>
#include <pantheios/implicit_link/be.WindowsConsole.h>

extern "C" const char PANTHEIOS_FE_PROCESS_IDENTITY[] = "TestLog";

int _tmain(int argc, _TCHAR* argv[])
{
    pantheios::log_DEBUG("这是用pantheios显示出来的日志信息");
    return 0;
}

5.按Ctrl+F5运行,结果如下图所示:
http://hi.csdn.net/attachment/201112/9/0_132340144998dy.gif
6.若是要改变颜色,改变显示内容,则改变代码如下所示:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "stdafx.h"
#include <pantheios/pantheios.hpp>
#include <pantheios/backends/bec.WindowsConsole.h>
#include <pantheios/implicit_link/core.h>
#include <pantheios/implicit_link/fe.simple.h>
#include <pantheios/implicit_link/be.WindowsConsole.WithCallback.h>

extern "C" const char PANTHEIOS_FE_PROCESS_IDENTITY[] = "TestLog";

PANTHEIOS_CALL(void) pantheios_be_WindowsConsole_getAppInit(int/* backEndId */, pan_be_WindowsConsole_init_t* init) /* throw() */
{
    init->flags |=PANTHEIOS_BE_INIT_F_NO_PROCESS_ID;
    init->flags |=PANTHEIOS_BE_INIT_F_NO_THREAD_ID;
    init->flags |=PANTHEIOS_BE_INIT_F_HIGH_RESOLUTION;

    init->colours = FOREGROUND_BLUE | FOREGROUND_INTENSITY;   
}

int _tmain(int argc, _TCHAR* argv[])
{
    pantheios::log_DEBUG("这是用pantheios显示出来的日志信息");
    return 0;
}


7.结果如下图所示:
http://hi.csdn.net/attachment/201112/9/0_1323401489nxlo.gif
8.若是想保存到文件的话,改动如下代码:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
#include "stdafx.h"
#include <pantheios/pantheios.hpp>
#include <pantheios/backends/bec.file.h>
#include <pantheios/implicit_link/core.h>
#include <pantheios/implicit_link/fe.simple.h>
#include <pantheios/implicit_link/be.file.h>

extern "C" const char PANTHEIOS_FE_PROCESS_IDENTITY[] = "TestLog";

int _tmain(int argc, _TCHAR* argv[])
{
    pantheios::log_DEBUG("这是用pantheios显示出来的日志信息");
    pantheios_be_file_setFilePath("single.log", PANTHEIOS_BE_FILE_F_TRUNCATE, PANTHEIOS_BE_FILE_F_TRUNCATE, PANTHEIOS_BEID_ALL);
    pantheios_be_file_setFilePath(NULL, PANTHEIOS_BEID_ALL);
    return 0;
}


9.运行后,可在工程下发现有"single.log"文件,打开如下图所示:
http://hi.csdn.net/attachment/201112/9/0_1323401518dhOM.gif

扩展阅读:
1.Using Callback Back-ends with the Pantheios Logging API Libraryhttp://www.codeproject.com/KB/cpp/callback_backends.aspx
2.Adding Logging to C Programs with the Pantheios C APIhttp://www.codeproject.com/KB/cpp/pantheios_C.aspx
3.An Introduction to Pantheios Back-ends, Part 1: The Back-end APIhttp://www.codeproject.com/KB/trace/PantheiosBackendIntro.aspx
4.pantheioshttp://pantheios.sourceforge.net/tutorials.html
作者:akof1314 发表于2011-12-9 11:31:22 原文链接
页: [1]
查看完整版本: C/C++ Pantheios诊断日志API库 |akof1314