这是我的第一篇ACE文章,希望大家能够喜欢 ------------------------ 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的初学者,我不会因旁人的失败和抱怨而动摇,我初生牛犊不怕虎 
|