`
pleasetojava
  • 浏览: 705862 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

ACE的日志输出之小见

阅读更多

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"

我们来看看两个输出:

1ACE_ERROR_RETURN( (LM_ERROR, ACE_TEXT("MAIN!%i%t%s%p\n"), 100, "asdf", ACE_TEXT("SERVICE CONFIGURE OPEN!")), 1

输出:MAIN!100682asdfSERVICE 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;

}

以上个人见解而已!

分享到:
评论

相关推荐

    Python中使用logging和traceback模块记录日志和跟踪异常

    logging模块用于输出运行日志,可以设置不同的日志等级,保存信息到日志文件中等。 相比print,logging可以设置日志的等级,控制在发布版本中的输出内容,并且可以指定日志的输出格式。 1. 使用logging在终端输出...

    rar压缩软件.rar

    如果输出文件名没有指定,注释数据会被发送到标准输出设备。 例子: 1) rar cw oldarch comment.txt 2) rar cw -scuc arc unicode.txt 3) rar cw arc d 从压缩文件中删除文件。请注意,如果这个命令导致...

    traces日志中的线程状态参数解析大全

     执行 adb shell kill -3 pid或者当进程发生anr、native crash等故障的时候,系统会生成traces日志文件,默认输出到 /data/anr/ 目录下。traces日志主要由发生anr时的资源使用情况以及各个线程的状态组成。 ---...

    Node绑定全局TraceID的实现方法

    如果不实现日志和请求的绑定,我们难以判断日志输出与对应用户请求的对应关系,这对 线上问题排查 带来了困难。 例如,在用户访问 retrieveOne API 时,其会调用 retrieveOneSub 函数,如果我们想在 ...

    YodPHP 1.4.1.zip

    YodPHP 1.4.1 更新日志:2015-12-01 update:文件通用选择,支持跨域,允许第三方调用;部分服务器获取当前url异常情况兼容处理;tar解压,文件名过长兼容处理(路径大于100字符处理);图片预览大图处理;生成多级...

    python3 使用traceback定位异常实例

    得到的是(输出结果:division by zero)虽然得到了错误的日志输出,但是不知道为什么出错,也不能定位具体出错位置。 2、现在我们使用 traceback 就可以得到具体的错误,以及定位到出错的位置。这样就能更方便调试...

    完美视频转换工具

    “思优视频转换器”SEEALL Video Converter (免费视频格式转换软件)是一款功能强大的专业视频格式转换软件,多达90余种的配置方案便于用户的选择,使之成为新手和有经验用户的最佳选择。 思优视频转换器 主要功能...

    WinRAR_4.0.exe

    如果输出文件名没有指定,注释数据会被发送到标准输出设备。 例子: 1) rar cw oldarch comment.txt 2) rar cw -scuc arc unicode.txt 3) rar cw arc d 从压缩文件中删除文件。请注意,如果这个命令导致...

    WinRar 9.0 破解版

    WinRAR流行好用的压缩工具,支持鼠标拖放及外壳扩展,完美支持 ZIP 档案,内置程序可以解开 CAB、ARJ、LZH、TAR、GZ、ACE、UUE、BZ2、JAR、ISO 等多种类型的压缩文件;具有估计压缩功能,你可以在压缩文件之前得到用...

    winrar3.9破解

    WinRAR流行好用的压缩工具,支持鼠标拖放及外壳扩展,完美支持 ZIP 档案,内置程序可以解开 CAB、ARJ、LZH、TAR、GZ、ACE、UUE、BZ2、JAR、ISO 等多种类型的压缩文件;具有估计压缩功能,你可以在压缩文件之前得到用...

    中文简体压缩软件RAR 6.0

    在 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团队推荐)--随书源代码

    对应的书籍资料见: Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐) 基本信息 原书名: Pro Oracle SQL 原出版社: Apress 作者: (美)Karen Morton Kerry Osborne Robyn Sands Riyaj Shamsudeen Jared...

    C#探秘系列(三)——StackTrace,Trim

     可能我们看到最多的就是catch中的e参数,里面会有一个StackTrace,然后不可否认的这玩意太有用了,它会把调用堆栈中的信息输出出来,有了它,我们就可以快速的知道运行代码的执行流并且快速的定位到问题。...

    winrar3.7 Beta8

    &lt;br&gt; * WinRAR 对 RAR 和 ZIP 2.0 格式压缩文件提供完整支持,并可以解压 CAB、 ARJ、LZH、TAR、GZ、ACE、UUE、BZ2、JAR、ISO、Z、7Z 等压缩文件。 &lt;br&gt; * WinRAR 支持 NTFS 的文件安全和数据流。 ...

    Windows 系统错误代码简单分析

    可能是一个包含注册表数据文件的结构已损坏,也可能内存中该文件的系统映像已损坏,或者因为备份副本(或日志)不存在(或损坏)导致无法恢复该文件。  1016 由注册表引起的 I/O 操作发生了不可恢复的错误。...

    网管教程 从入门到精通软件篇.txt

    ACE:Ace压缩档案格式 ACT:Microsoft office助手文件 AIF,AIFF:音频互交换文件,Silicon Graphic and Macintosh应用程序的声音格式 ANI:Windows系统中的动画光标 ARC:LH ARC的压缩档案文件 ARJ:Robert ...

Global site tag (gtag.js) - Google Analytics