转载于: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\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; 
}

ACE_DEBUG介绍及日志输出的更多相关文章

  1. .NET Core的日志[2]:将日志输出到控制台

    对于一个控制台应用,比如采用控制台应用作为宿主的ASP.NET Core应用,我们可以将记录的日志直接输出到控制台上.针对控制台的Logger是一个类型为ConsoleLogger的对象,Consol ...

  2. Python日志输出——logging模块

    Python日志输出——logging模块 标签: loggingpythonimportmodulelog4j 2012-03-06 00:18 31605人阅读 评论(8) 收藏 举报 分类: P ...

  3. AMQ学习笔记 - 19. 问题解决 - 控制Atomikos的日志输出

    概述 在使用Atomikos为ActiveMQ提供JTA支持时,Atomikos在控制台打印了繁琐的日志.这里介绍如何控制Atomikos日志输出的粒度. 解决方案 基于以下三个事实: Atomiko ...

  4. log4j日志输出到web项目指定文件夹

    感谢 eric2500 的这篇文章:http://www.cxyclub.cn/n/27860/ 摘要:尝试将log4j的文件日志输出到web工程制定目录,遇到了很多问题,最终在eric2500的指导 ...

  5. postgresql数据库配置csv格式的日志输出

    postgresql数据库配置csv格风格日志输出 以下介绍postgresql数据库中关于csv格式日志(pg中一种比較具体的日志输出方式)的设置方法. 1.进入$PGDATA文件夹(pg的安装文件 ...

  6. 修改Python文件日志输出位置

    Python logging模块介绍:http://blog.chinaunix.net/uid-26000296-id-4372063.html [root@fuel ~]# vi /var/lib ...

  7. Python之向日志输出中添加上下文信息

    除了传递给日志记录函数的参数(如msg)外,有时候我们还想在日志输出中包含一些额外的上下文信息.比如,在一个网络应用中,可能希望在日志中记录客户端的特定信息,如:远程客户端的IP地址和用户名.这里我们 ...

  8. iOS项目之使用开关控制日志输出的功能

    最近一直在做sdk的项目,用户提出了一个需求,需要屏蔽sdk内部的日志输出.由于sdk内部的日志是为了调试,如果屏蔽了肯定不方便,所以研究了一下日志输出开关的功能. 在这里介绍两种实现方案:一种方案是 ...

  9. springboot 学习之路 4(日志输出)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

随机推荐

  1. lintcode702 连接两个字符串中的不同字符

    连接两个字符串中的不同字符   给出两个字符串, 你需要修改第一个字符串,将所有与第二个字符串中相同的字符删除, 并且第二个字符串中不同的字符与第一个字符串的不同字符连接 思路:遍历两个字符串,找到互 ...

  2. HDU 2489 Minimal Ratio Tree(暴力+最小生成树)(2008 Asia Regional Beijing)

    Description For a tree, which nodes and edges are all weighted, the ratio of it is calculated accord ...

  3. nodejs笔记--模块篇(三)

    文件模块访问方式通过require('/文件名.后缀')    require('./文件名.后缀')    requrie('../文件名.后缀') 去访问,文件后缀可以省略:以"/&qu ...

  4. Python中from module import *语法

    from module import *的语法在Python 3.X和Python 2.X中的使用稍有区别: 在Python 3.X中,from module import *无法在函数里面使用,而在 ...

  5. Java 动态绑定和多态

    动态绑定和多态 动态绑定是指:"在执行程序期间(而非编译期间),判断引用所指对象的实际类型,调用其相应的方法." 动态绑定(多态)存在的条件 要有继承. 要有重写. 父类引用指向子 ...

  6. LintCode-212.空格替换

    空格替换 设计一种方法,将一个字符串中的所有空格替换成 %20 .你可以假设该字符串有足够的空间来加入新的字符,且你得到的是"真实的"字符长度. 你的程序还需要返回被替换后的字符串 ...

  7. 【Redis】- 总结精讲

    本文围绕以下几点进行阐述 1.为什么使用redis2.使用redis有什么缺点3.单线程的redis为什么这么快4.redis的数据类型,以及每种数据类型的使用场景5.redis的过期策略以及内存淘汰 ...

  8. centos 安装mod_wsgi

    如果自定义升级过了python到2.7 #./configure --with-apxs=/usr/sbin/apxs --with-python=/usr/local/python27/bin/py ...

  9. js获取某周、某月、下月、某季度的开始日期、结束日期及判断日期第几周

    //格式化日期:yyyy-MM-dd function formatDate(date) {   var myyear = date.getFullYear();   var mymonth = da ...

  10. JavaScript Array 类型

    除 Object类型外,Array 类型算是ECMAScript中最常用的类型了,而且,ECMAScript中的数组和其他多数语言的数组有着非常大的差别,虽然这些数组都是数据的有序列表,但与其他语言不 ...