• ACE_DEBUG介绍及日志输出


    转载于:http://blog.csdn.net/zzjxiaozi/article/details/6642925

    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 ")); 
      ACE_LOG_MSG->clr_flags (ACE_Log_Msg::STDERR); 
      // 这个消息将不被输出,因为标志位清除了 
      ACE_DEBUG ((LM_DEBUG, 
                  "second message ")); 
      ACE_LOG_MSG->set_flags (ACE_Log_Msg::OSTREAM); 
      //这个消息将不被输出,因为流的实体尚未定义 
      ACE_DEBUG ((LM_DEBUG, 
                  "third message ")); 
      //建立一个流实体,指向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 ")); 
      ACE_LOG_MSG->set_flags (ACE_Log_Msg::STDERR); 
      // 这个消息将同时输出到文件和STDERR 
      ACE_DEBUG ((LM_DEBUG, 
                  "fifth message ")); 
      return 0; 
    }

  • 相关阅读:
    MVC WebApi的两种访问方法
    MVC CRUD 的两种方法
    MVC EF 导航属性
    MVC EF两种查询方法
    MVC WebApi
    POJ 1511 Invitation Cards ( 双向单源最短路 || 最小来回花费 )
    POJ 2502 Subway ( 最短路 && 最短路建图 )
    POJ 3660 Cow Contest ( 最短路松弛思想应用 && Floyd求传递闭包 )
    POJ 1502 MPI MaeIstrom ( 裸最短路 || atoi系统函数 )
    POJ 3259 Wormholes ( SPFA判断负环 && 思维 )
  • 原文地址:https://www.cnblogs.com/shmilxu/p/4828808.html
Copyright © 2020-2023  润新知