ACE中的Debug的调试及日志输出

ACE_DEBUG介绍及日志输出

 

ACE_DEBUG  常规的一些输出消息  

ACE_ERROR  会提供程序出错的一些低级消息

 

2个宏的用法上是一致的

  ACE_DEBUG(错误级别,"格式串",变量1...变量N

  其中部分错误级别系统定义如下:

   LM_SHUTDOWN = 01,系统死机级别

    LM_TRACE = 02,跟踪级别

    LM_DEBUG = 04,DEBUG级别

    LM_INFO = 010,常规信息级别

    LM_NOTICE = 020,注意级别

    LM_WARNING = 040,警告级别

    LM_STARTUP = 0100,启动级别

    LM_ERROR = 0200,错误级别

    LM_CRITICAL = 0400,危急级别

    LM_ALERT = 01000,可修复的警告级别

    LM_EMERGENCY = 02000,全局警告级别

  部分格式串使用如下:

   c printf使用类似

   %n-表当前程序名称

   %t-表当前线程号

   %p-表指针

   %s-字符串

ACE通过全局单体实例 ACE_LOG_MSG 管理和控制输出,我们可以利用这个实例把输出重定向

 

到文件,也可以重定向到标志输出

其中还可以控制什么级别的消息可被输出,简单使用如下:

 

  ACE_LOG_MSG->set_flags (ACE_Log_Msg::STDERR);

  设置输出到标准错误输出

  ACE_LOG_MSG->clr_flags (ACE_Log_Msg::STDERR);

  关闭输出到标志错误输出

  ACE_LOG_MSG->set_flags (ACE_Log_Msg::OSTREAM);

  ofstream myostream (filename, ios::out | ios::trunc);

  ACE_LOG_MSG->msg_ostream (&myostream);

  设置输出到文件

  u_long priority_mask =ACE_LOG_MSG->priority_mask (ACE_Log_Msg::PROCESS);

  ACE_SET_BITS (priority_mask,LM_DEBUG |LM_INFO);

  设置只记录LM_DEBUG 或者LM_INFO级别的消息

  ACE_CLR_BITS (priority_mask,LM_DEBUG | LM_INFO);                   

  清除设置条件

ACE_LOG_MSG还有一个非常有意思的功能,能以16进制方式输出内存中的块 ,简单使用如下:

      ACE_LOG_MSG->log_hexdump (LM_DEBUG,

                                (char *) array,

                                sizeof array);

 

下面附上一个使用例子,例子来源于ACE包中的例子程序

#include "ace/OS_main.h"

#include "ace/streams.h"

#include "ace/Log_Msg.h"

int

ACE_TMAIN (int, ACE_TCHAR *[])

{

  // 这个消息将输出到STDERR

  ACE_DEBUG ((LM_DEBUG,

              "first message/n"));

  ACE_LOG_MSG->clr_flags (ACE_Log_Msg::STDERR);

  // 这个消息将不被输出,因为标志位清除了

  ACE_DEBUG ((LM_DEBUG,

              "second message/n"));

  ACE_LOG_MSG->set_flags (ACE_Log_Msg::OSTREAM);

  //这个消息将不被输出,因为流的实体尚未定义

  ACE_DEBUG ((LM_DEBUG,

              "third message/n"));

  //建立一个流实体,指向d:/output.log文件

  const char *filename = "d://output.log";

  ofstream myostream (filename, ios::out | ios::trunc);

  if (myostream.bad ())

    return 1;

  // 设置输出到流

  ACE_LOG_MSG->msg_ostream (&myostream);

  //这个消息将输出到文件中

  ACE_DEBUG ((LM_DEBUG,

              "fourth message/n"));

  ACE_LOG_MSG->set_flags (ACE_Log_Msg::STDERR);

  // 这个消息将同时输出到文件和STDERR

  ACE_DEBUG ((LM_DEBUG,

              "fifth message/n"));

  return 0;

}

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值