ACE的日志输出之小见
1、格式化输出
ace里面只要是可以输出string的也就是c语言里面的那种char *字符串,就都可以像printf那样设置格式予以输出比如:
ACE_ERROR_RETURN( (LM_ERROR, ACE_TEXT("MAIN!%i%t%s%p\n"), 100, "asdf", ACE_TEXT("SERVICE CONFIGURE OPEN!")),
里面%t%p由系统给定,不用我们自己来,否则出错,应该是段错误,而另外的%i%s就是要认为的输出了,这里有一个问题就是,后门如果出现ACE_TEXT()那么输出的问题就出现了;个人总结了一个结论就是自动寻找,即:每一个格式都要自动寻找后面的输出,如果在没有找到对应的格式输出之前碰到了ACE_TEXT这个东西就先输出它,还有就是它不是作为格式输出的,有几个格式比如%p遇到ACE_TEXT要后输出,具体是哪几个我也不清楚咯,跟printf有点不同:
printf("%s", "asdfasdf\n");而后面的字符串是格式输出,但是ACE_TEXT()不是格式输出的,还有一点跟printf不同的是,输出部分不在一个括号里面,而是在ACE_TEXT()的外面比如:
ACE_TEXT("MAIN!%i%t%s%p\n"), 100, "asdf"
我们来看看两个输出:
1、ACE_ERROR_RETURN( (LM_ERROR, ACE_TEXT("MAIN!%i,%t,%s,%p\n"), 100, "asdf", ACE_TEXT("SERVICE CONFIGURE OPEN!")), 1)
输出:MAIN!100,682,asdf,SERVICE CONFIGURE OPEN!:no error!
2、 ACE_ERROR_RETURN( (LM_ERROR, ACE_TEXT("MAIN!%i,%t,%p,%s\n"), 100,
ACE_TEXT("SERVICE CONFIGURE OPEN!"), "asdf"),
1);
输出:MAIN!100,1792,SERVICE CONFIGURE OPEN!: No error,asdf
2、重定向
ace里面的日志一般都是已经设定了输出对象的,给定一段程序:
#include "ace/OS.h"
#include "ace/Log_Msg.h"
//#define ACE_NTRACE 0
//#include <iostream>
//#include <fstream>
#include "ace/streams.h"
using namespace std;
int ACE_TMAIN(int argc, ACE_TCHAR *argv[])
{
cout << "asdf\n";
printf("%s", "asdfasdf\n");
ACE_ERROR_RETURN( (LM_ERROR, ACE_TEXT("MAIN!%i,%t,%p,%s\n"), 100,
ACE_TEXT("SERVICE CONFIGURE OPEN!"), "asdf"),
1);
return 0;
}
即便是把程序设定了重定向依旧得不到想要的结果,比如重定向到readme.txt:
项目-》××属性-》配置属性-》调试-》命令参数
里面输入>readme.txt,即重写,>>readme.txt就是追加,运行程序你依旧看不到想要的结果:
readme.txt里面只有:÷
asdf
asdfasdf
没有我们要的MAIN!100,1792,SERVICE CONFIGURE OPEN!: No error,asdf,这个部分输出到了stderr了,因此我们就要用ace的重定向来让输出到文件:
#include "ace/OS.h"
#include "ace/Log_Msg.h"
//#define ACE_NTRACE 0
//#include <iostream>
//#include <fstream>
#include "ace/streams.h"
using namespace std;
void foo() {
//cout << "haha\n";
ACE_TRACE((ACE_TEXT("ADF")));
}
int ACE_TMAIN(int argc, ACE_TCHAR *argv[])
{
ACE_OSTREAM_TYPE *output = new ofstream("ReadMe.txt");
ACE_LOG_MSG->msg_ostream(output, 1);
ACE_LOG_MSG->set_flags(ACE_Log_Msg::OSTREAM);
ACE_LOG_MSG->clr_flags(ACE_Log_Msg::STDERR);
ACE_TCHAR *p = "asdfasdf\\";
cout << "haha\n";
cout << "haha\n";
cout << "haha\n";
//ACE_LOG_MSG->priority_mask(31,ACE_Log_Msg::PROCESS);
ACE_TRACE((ACE_TEXT("ADF")));
ACE_DEBUG((LM_DEBUG,"Hello, ACE! \n"));
//ACE_TRACE((ACE_TEXT("ADF%s\n"), p ));
ACE_ERROR((LM_INFO,ACE_TEXT("hi mom!%s,%d %d\n"), p, 100, LM_INFO));
foo();
ACE_ERROR_RETURN( (LM_ERROR, ACE_TEXT("MAIN!%i,%t,%p,%s\n"), 100, ACE_TEXT("SERVICE CONFIGURE OPEN!"), "asdf"), 1);
//ACE_TRACE((ACE_TEXT("ADFdd")));
ACE_LOG_MSG->clr_flags(ACE_Log_Msg::OSTREAM);
delete output;
//ACE_OS::exit(1);
return 0;
}
以上个人见解而已!
分享到:
相关推荐
logging模块用于输出运行日志,可以设置不同的日志等级,保存信息到日志文件中等。 相比print,logging可以设置日志的等级,控制在发布版本中的输出内容,并且可以指定日志的输出格式。 1. 使用logging在终端输出...
如果输出文件名没有指定,注释数据会被发送到标准输出设备。 例子: 1) rar cw oldarch comment.txt 2) rar cw -scuc arc unicode.txt 3) rar cw arc d 从压缩文件中删除文件。请注意,如果这个命令导致...
执行 adb shell kill -3 pid或者当进程发生anr、native crash等故障的时候,系统会生成traces日志文件,默认输出到 /data/anr/ 目录下。traces日志主要由发生anr时的资源使用情况以及各个线程的状态组成。 ---...
如果不实现日志和请求的绑定,我们难以判断日志输出与对应用户请求的对应关系,这对 线上问题排查 带来了困难。 例如,在用户访问 retrieveOne API 时,其会调用 retrieveOneSub 函数,如果我们想在 ...
YodPHP 1.4.1 更新日志:2015-12-01 update:文件通用选择,支持跨域,允许第三方调用;部分服务器获取当前url异常情况兼容处理;tar解压,文件名过长兼容处理(路径大于100字符处理);图片预览大图处理;生成多级...
得到的是(输出结果:division by zero)虽然得到了错误的日志输出,但是不知道为什么出错,也不能定位具体出错位置。 2、现在我们使用 traceback 就可以得到具体的错误,以及定位到出错的位置。这样就能更方便调试...
“思优视频转换器”SEEALL Video Converter (免费视频格式转换软件)是一款功能强大的专业视频格式转换软件,多达90余种的配置方案便于用户的选择,使之成为新手和有经验用户的最佳选择。 思优视频转换器 主要功能...
如果输出文件名没有指定,注释数据会被发送到标准输出设备。 例子: 1) rar cw oldarch comment.txt 2) rar cw -scuc arc unicode.txt 3) rar cw arc d 从压缩文件中删除文件。请注意,如果这个命令导致...
WinRAR流行好用的压缩工具,支持鼠标拖放及外壳扩展,完美支持 ZIP 档案,内置程序可以解开 CAB、ARJ、LZH、TAR、GZ、ACE、UUE、BZ2、JAR、ISO 等多种类型的压缩文件;具有估计压缩功能,你可以在压缩文件之前得到用...
WinRAR流行好用的压缩工具,支持鼠标拖放及外壳扩展,完美支持 ZIP 档案,内置程序可以解开 CAB、ARJ、LZH、TAR、GZ、ACE、UUE、BZ2、JAR、ISO 等多种类型的压缩文件;具有估计压缩功能,你可以在压缩文件之前得到用...
在 c:\*.rar 压缩文件中的 *.txt 文件执行区分大小写的 "first level" 字符串的搜索 2) rar ih=f0e0aeaeab2d83e3a9 -r e:\text 在 e:\text 目录下的 rar 压缩文件中搜索十六进制字符串 f0 e0 ae ae ab 2d ...
对应的书籍资料见: Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐) 基本信息 原书名: Pro Oracle SQL 原出版社: Apress 作者: (美)Karen Morton Kerry Osborne Robyn Sands Riyaj Shamsudeen Jared...
可能我们看到最多的就是catch中的e参数,里面会有一个StackTrace,然后不可否认的这玩意太有用了,它会把调用堆栈中的信息输出出来,有了它,我们就可以快速的知道运行代码的执行流并且快速的定位到问题。...
<br> * WinRAR 对 RAR 和 ZIP 2.0 格式压缩文件提供完整支持,并可以解压 CAB、 ARJ、LZH、TAR、GZ、ACE、UUE、BZ2、JAR、ISO、Z、7Z 等压缩文件。 <br> * WinRAR 支持 NTFS 的文件安全和数据流。 ...
可能是一个包含注册表数据文件的结构已损坏,也可能内存中该文件的系统映像已损坏,或者因为备份副本(或日志)不存在(或损坏)导致无法恢复该文件。 1016 由注册表引起的 I/O 操作发生了不可恢复的错误。...
ACE:Ace压缩档案格式 ACT:Microsoft office助手文件 AIF,AIFF:音频互交换文件,Silicon Graphic and Macintosh应用程序的声音格式 ANI:Windows系统中的动画光标 ARC:LH ARC的压缩档案文件 ARJ:Robert ...