ACE的日志入门

原创 2006年06月16日 17:56:00
ACE就不多说的,先说日志。
       屏幕输出
ACE的日志是否复杂,我也不知道,但可以从现在开始一步一步入门。ACE默认的输出方式是输出到屏幕。这就是一种方式。
ACE_LOG_MSG->set_flags(ACE_LOG_MSG->STDERR);
       ACE_DEBUG((LM_WARNING,ACE_TEXT("TEST/n")));
也可以这样。
              ACE_LOG_MSG->open ("TestLog", ACE_Log_Msg::STDERR);
       ACE_DEBUG((LM_WARNING,ACE_TEXT("TEST/n")));
       其实第一句都还是不必要的,因为默认的方式就是使用屏幕打印。除非使用重定向,否则不需要特别说明。ACE的日志系统不是靠宏名本身,而是靠宏的第一个参数,即Severity Level来区分日志信息类型。
      
       系统日志
       在Windows事件察看器来看,存在应用程序日志,而通过ACE可以简单的把代码写到应用程序日志上去。

ACE_LOG_MSG->open("TestLog", ACE_Log_Msg::SYSLOG, ACE_TEXT ("ACE log"));

       ACE_DEBUG((LM_TRACE,ACE_TEXT("TEST3/n")));
       这个地方很简单,查找最底层的代码调用了:: ReportEventA()。这个地方比较有意思。ACE根据LM设定的等级,翻译成SYSLOG的日志等级。
 
       文件
       ofstreamstream("UVMG.log");
       ACE_LOG_MSG->msg_ostream(&stream,0);
       ACE_LOG_MSG->set_flags(ACE_LOG_MSG->OSTREAM|ACE_LOG_MSG->STDERR);
       ACE_DEBUG((LM_TRACE,ACE_TEXT("TEST3/n")));
       ACE_ERROR((LM_ERROR,ACE_TEXT("TEST1/n")));
考虑如上代码,上面的代码同时支持写文件和屏幕打印。需要注意的是msg_ostream支持自动删除输出流,这个地方可以放心的new输出流。这个地方是需要注意的,因为ACE_LOG_MSG使用了Singleton,也就是说,同时只有一个输入输出流的存在,如果想写不同的文件,需要在流之间切换。
 
回调函数
C++回调函数的目的是为了让用户可以实现自己的函数实现,而被系统调用。NMS在错误日志的记录上使用了回调的技术。然而,什么东西都是两面的,如果不是很理解回调的话,最好还是不要轻易用回调。
考虑如下代码
classMyCallback:publicACE_Log_Msg_Callback
{
public:
       virtualvoidlog (ACE_Log_Record &log_record)
       {

              printf("Only Test/n");

       }
};
ofstreamstream("UVMG.log");
MyCallbackcall;
ACE_LOG_MSG->msg_ostream(&stream,0);
ACE_LOG_MSG->msg_callback(&call);
ACE_LOG_MSG->set_flags(ACE_LOG_MSG->OSTREAM|ACE_LOG_MSG->STDERR|ACE_LOG_MSG->MSG_CALLBACK);
ACE_DEBUG((LM_TRACE,ACE_TEXT("TEST3/n")));
ACE_ERROR((LM_ERROR,ACE_TEXT("TEST1/n")));
       从这一段的代码看出来,其实log是让用户自己实现对log的定制。然后进行注册就可以了以后所有的调用会支持用户的实现。
 

// Enable the bits in the logger's options flags.
void set_flags (unsigned long f);

// Disable the bits in the logger's options flags.
void clr_flags (unsigned long f);

       这个地方是支持用户或上标识的。可以支持各种日志方式。目前支持的方式有:

STDERR                     屏幕打印
LOGGER                    
把日志写到Log的客户端
OSTREAM                 
把日志写到输出流
MSG_CALLBACK       
把日志写到回调函数中
VERBOSE                  
准备好程序名称, timestamp, host name, process ID, and消息优先级
VERBOSE_LITE         
准备好timestamp and message priority
SILENT                             Do not print messages at all
SYSLOG                     Write messages to the system's event log
CUSTOM                    Write messages to the user-provided back end

VERBOSE和VERBOSE_LITE极为好用,省了很多事情。关于Client/Server会在今后涉及。
 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

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

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

ace日志多种输出方式

初学ACE,将自己的一些总结放在这里与大家分享,希望能有所帮助。不当之处恳请大家指正。 1. 输出到stderr ACE输出的默认方式,将日志输出到控制台。如果希望从其他的重定向方式切换到st...

ACE日志系统

ACE中日志系统 一、简介 以前曾介绍过一个开源日志系统log4cplus,ACE也有自己的Logging Facility,与log4cplus相似,ACE日志系统也具有线程安全...

ACE网络编程 一个日志服务器的实现

一个日志服务器的实现(C++网络编程第四章程序实现及解析) 一、服务端系统流程 1、首先运行Iterator_Logging_Server::run()函数,这个函数从父类Logging_...

ACE中日志系统

介绍了ACE中日志系统(Logging Facility)的基本使用一、简介以前曾介绍过一个开源日志系统log4cplus,ACE也有自己的Logging Facility,与log4cplus相似,...
  • byxdaz
  • byxdaz
  • 2011-12-04 22:08
  • 4081

ACE日志服务器

日  志  服  务  器 康    林(2011-1-28)   一、日志服务器的架构: 日志服务器由三部分组成: a)      ...
  • kl222
  • kl222
  • 2011-02-12 09:21
  • 2318

ACE日志输出的几种重定向方式

初学ACE,将自己的一些总结放在这里与大家分享,希望能有所帮助。不当之处恳请大家指正。 1. 输出到stderr ACE输出的默认方式,将日志输出到控制台。如果希望从其他的重定向方式切换到st...

ACE日志输出的几种重定向方式

初学ACE,将自己的一些总结放在这里与大家分享,希望能有所帮助。不当之处恳请大家指正。 1. 输出到stderr ACE输出的默认方式,将日志输出到控制台。如果希望从其他的重定向方式切换到st...

ACE 输出日志

ACE 输出日志

ACE日志例程

ACE提供了非常灵活、方便的日志管理和消息输出功能,下面就一些简单和直接的功能做一个简单介绍ACE_DEBUG  常规的一些输出消息   ACE_ERROR  会提供程序出错的一些低级消息2个宏的用法...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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