ACE日志消息管理

转载 2006年05月23日 12:11:00

ACE提供了非常灵活、方便的日志管理和消息输出功能,下面就一些简单和直接的功能做一个简单介绍

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日记管理功能中的九牛一毛,还有更多的功能,
我将会在ACE技巧和ACE应用文章写出;
如通过命令行参数来配置日志参数输出、怎么通过配置文件来配置日志等文章

ACE日志消息管理

ACE提供了非常灵活、方便的日志管理和消息输出功能,下面就一些简单和直接的功能做一个简单介绍ACE_DEBUG 常规的一些输出消息 ACE_ERROR 会提供程序出错的一些低级消息2个宏的用法上是一致...
  • DNCS
  • DNCS
  • 2006年05月22日 11:20
  • 1396

ACE笔记(1) -日志消息管理

 ACE提供了非常灵活、方便的日志管理和消息输出功能,下面就一些简单和直接的功能做一个简单介绍ACE_DEBUG  常规的一些输出消息   ACE_ERROR  会提供程序出错的一些低级消息2个宏的用...
  • akailee
  • akailee
  • 2009年04月18日 11:58
  • 228

【风】的ACE笔记(1)-日志消息管理

ACE提供了非常灵活、方便的日志管理和消息输出功能,下面就一些简单和直接的功能做一个简单介绍ACE_DEBUG  常规的一些输出消息   ACE_ERROR  会提供程序出错的一些低级消息2个宏的用法...
  • wuhuiran
  • wuhuiran
  • 2008年10月15日 16:34
  • 709

【风】的ACE笔记(1)-日志消息管理

这是我的第一篇ACE文章,希望大家能够喜欢------------------------ACE提供了非常灵活、方便的日志管理和消息输出功能,下面就一些简单和直接的功能做一个简单介绍ACE_DEBUG...
  • AnyJack
  • AnyJack
  • 2005年04月08日 15:35
  • 2824

简单的ACE反应器(Reactor)模式服务器

在服务器端使用Reactor框架使用Reactor框架的服务器端结构如下:服务器端注册两种事件处理器,Cli_acceptor和Cli_server ,Cli_server类负责和客户端的通信,每一个...
  • FebruarySwallow
  • FebruarySwallow
  • 2015年11月15日 11:22
  • 372

ACE+线程池实现一个简单的服务器+多客户端通信程序

ACE中本身具有异步通信组建,比如handle_input和handle_ouput等方法,可以用来实现一个 单线程的服务器,并且可以...
  • j_akill
  • j_akill
  • 2014年09月27日 23:50
  • 2940

十五ACE编写简单的通信程序

    该程序将演示如何将一个简单结构序列化后发送到网络上,如何从网络上接收到数据后反序列化回结构。    ACE的C++ WRAPPER FACADE层将网络通信分成三种角色...
  • sheismylife
  • sheismylife
  • 2007年07月17日 14:43
  • 7655

ace 打造后端管理框架 bootstrap mybaits spring

ace 打造后端管理框架 bootstrap mybaits spring
  • wggorking
  • wggorking
  • 2016年10月13日 11:09
  • 1155

日志消息

开始接触到日志是实时日志系统,通过写入共享内存,logview进行实时查看。但当时没有处理好两个问题,日志实时滚动,由于日志过多,无法很好的查看日志信息,虽然也进行了分级,按级别trace,info,...
  • tayachz
  • tayachz
  • 2013年09月11日 00:08
  • 468

Ace---一个很棒的BootStrap后台管理系统模版

由于工作的需要,今天发现了一个非常棒的后台界面模版---ace 下载地址 这个模版是个绝佳的学习例子!各种前端的样例都有,准备在实际开发中使用。 开发中使用。...
  • acmjk
  • acmjk
  • 2015年05月19日 15:11
  • 3036
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ACE日志消息管理
举报原因:
原因补充:

(最多只允许输入30个字)