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应用文章写出;
如通过命令行参数来配置日志参数输出、怎么通过配置文件来配置日志等文章

相关文章推荐

ROS学习笔记3 日志消息

(1)日志消息 ROS日志系统的核心思想就是使程序生成一些简单的文本字符流。这些日志消息分为五个不同的严重级别: DEBUG INFO WARN ERROR ...

spark读取 kafka nginx网站日志消息 并写入HDFS中

spark 版本为1.0 kafka 版本为0.8 首先来看看kafka的架构图 详细了解请参考官方 我这边有三台机器用于kafka 日志收集的 A 192.168.1.1 为server...

ubuntu14.0日志消息内容存放的位置

openlog、syslog和 closelog创建的日志内容,在Ubuntu14.0里存放在/var/log/syslog! /var/log/alternatives.log-更新替代信息都记...

一起学ROS之日志消息,命名规范,消息录制与回放

作为ROS学习的第三节,本节主要讲解三个问题,1.日志消息2.计算图源命名3.消息录制与回放。 1、日志消息 简单来讲日志就是我们在写C++程序时的printf,对于调试来说有至关重要的的作用,日...

利用ACE日志策略进行日志运行时配置管理

为什么要使用ACE日志策略?       因为使用ACE日志策略可以使我们以配置的方式对日志输出进行管理更为重要的是,其利用配置参数可以控制日志输出中的各种问题, 如:可以配置当应用的日志文件到达指定...

ace第二课-- 一个日志服务器的实现

一个日志服务器的实现(C++网络编程第四程序实及解析) 一、服务器端源码 1)Logging_Server.h #ifndef LOGGING_SERVER_H #define LOGGING_SER...
  • zyysql
  • zyysql
  • 2011年08月10日 20:14
  • 1546

ACE 日志系统1CallBack 到文件。

#ifdef _DEBUG #pragma comment(lib, "aced.lib") #else #pragma comnent(lib, "ace.lib") #endif #includ...

使用ACE日志设施(二)详细介绍(v4)

最简单的日志设施 #include "ace/Log_Msg.h" int main(int argc, char *argv[]) { ACE_DEBUG((LM_INFO,ACE_TEXT...

ACE中日志系统(Logging Facility)的基本使用

一、简介以前曾介绍过一个开源日志系统log4cplus,ACE也有自己的Logging Facility,与log4cplus相似,ACE日志系统也具有线程安全、灵活、分级显示等特点,可以面向程序调试...

ace日志多种输出方式

初学ACE,将自己的一些总结放在这里与大家分享,希望能有所帮助。不当之处恳请大家指正。 1. 输出到stderr ACE输出的默认方式,将日志输出到控制台。如果希望从其他的重定向方式切换到st...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ACE日志消息管理
举报原因:
原因补充:

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