开源c++日志库 寻找-测试-选定

来源:互联网 发布:金税盘开票数据导出 编辑:程序博客网 时间:2024/06/10 14:22


背景:在考虑代码编写时,考虑到日志是必须的,看看c++有没有合适的日志库。

网络上搜索,好像有不少,还有log4j类似的。


liblogger

一款为C++开发的日志工具,支持输出到文件、网络以及控制台 

参考地址:http://sourceforge.net/projects/liblogger/ 

Log4cpp

 下载地址: http://sourceforge.net/projects/log4cpp/files

log4cplus

下载地址:http://sourceforge.net/projects/log4cplus/



因为用的是VC,windows平台,发现好多都是使用pthread, 排除掉。

又有好多是新支持C11的,我的版本太老,不行。


最后找到了这个:

http://my.oschina.net/u/988092/blog/198377


只要是支持vc6之后的版本,而且多线程。

而且对一些数据16进制输出(类似以前汇编的d命令)。

2016-08-18 13:18:59.131000 | DEBUG | 3112:6908:trade.cpp:345 | Order:[656]
             0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F    0123456789ABCDEF
0x00000000   39 39 39 39 00 00 00 00 00 00 00 30 36 37 31 38   9999.......06718
0x00000010   35 00 00 00 00 00 00 00 61 75 31 37 30 38 00 00   5.......au1708..
0x00000020   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0x00000030   00 00 00 00 00 00 00 32 00 00 00 00 00 00 00 00   .......2........
0x00000040   00 00 00 00 30 36 37 31 38 35 00 00 00 00 00 00   ....067185......
0x00000050   00 00 00 00 32 31 30 00 00 00 00 31 00 00 00 00   ....210....1....
0x00000060   00 00 00 00 00 38 72 40 01 00 00 00 33 00 00 00   .....8r@....3...
0x00000070   00 00 00 00 00 00 31 00 01 00 00 00 31 00 00 00   ......1.....1...
0x00000080   00 00 00 00 00 00 00 00 30 CA 11 41 00 00 00 00   ........0..A....
0x00000090   39 39 39 39 63 61 63 00 00 00 00 00 00 00 00 00   9999cac.........
0x000000A0   00 00 00 00 00 00 00 00 00 00 00 00 20 20 20 20   ............    


只需要把log.c 和log.h加入项目中即可使用,也支持编译成dll供加载调用。

主程序中加载  (后面再考虑通过配置文件加载日志级别)

CreateLogHandleG();SetLogOutputG( LOG_OUTPUT_FILE , "xyzproxy.log" , LOG_NO_OUTPUTFUNC );  //文件名SetLogLevelG( LOG_LEVEL_DEBUG );                SetLogStylesG( LOG_STYLES_HELLO , LOG_NO_STYLEFUNC );
退出时
                DestroyLogHandleG();


代码中直接使用,类似printf的格式

    InfoLogG( __FILE__ , __LINE__ , "ReqConnect(%s)",pFront );    DebugLogG( __FILE__ , __LINE__ ,"Cxyztrade::OnRspUserLogin(LoginField, err(%d),bIsLast(%d) )",pRspInfo->ErrorID,bIsLast);    DebugHexLogG(__FILE__,__LINE__,(char*)pRspUserLogin,sizeof(*pRspUserLogin),"FtdcRspUserLogin:[%ld]",sizeof(*pRspUserLogin));



其他的日志文件大小配置,级别配置等,待后面继续尝试:-)

LOGS 包含LOG数组


LOGS       -----------    LOG

LOGSCONF  ------------- LOGCONF


LOGC            (精简版本,可以直接调函数写日期)

g = CreateLogHandleFromConfig( "ctest.log.conf" , NULL ) ;if( g == NULL ){printf( "从配置文件构建日志句柄失败\n" );return -1;}else{SetGlobalLOG(g);}
配置文件:ctest.log.conf
output        FILE     ctestlog.loglevel         DEBUGstyles        DATETIME|LOGLEVEL|PID|TID|SOURCE|FORMAT|NEWLINEoptions       CHANGE_TESTrotate_mode   SIZErotate_size   10MBlog_bufsize   1MB 5MB



                                   



0 0
原创粉丝点击