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日志设施(二)详细介绍(v4)

最简单的日志设施 #include "ace/Log_Msg.h" int main(int argc, char *argv[]) { ACE_DEBUG((LM_INFO,ACE_TEXT...
  • ClamReason
  • ClamReason
  • 2014年03月17日 14:56
  • 2084

RabbitMQ从入门到精通----运行与管理

在上文中我们已经简单的介绍了AMQP消息通信的基本概念,并对运行环境进行了安装,但是当我们将RabbitMQ部署在线上的时候,有涉及到了RabbitMQ的优化,在本节中我们 着重讲解RabbitMQ的...
  • lp178116060
  • lp178116060
  • 2016年12月10日 16:45
  • 1328

activiti 工作流 ace admin 整合 开发 后台框架集成 学习

说明: Java SpringMVC+mybatis( MySQL、Oracle和sqlserver ) HTML5 全新高大尚后台框架 bootstrap (可换皮肤) ace UI框架集成最新...
  • hj7jay
  • hj7jay
  • 2017年06月12日 13:29
  • 1772

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

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

使用ACE日志设施(一)HelloWorld

(1)开始使用日志设施 使用日志设施,总是要包含头文件: #include "ace/Log_Msg.h" ACE日志的Hello World [cpp] view plaincop...
  • ClamReason
  • ClamReason
  • 2014年12月16日 10:44
  • 1468

ACE 输出日志

ACE 输出日志
  • ljx0305
  • ljx0305
  • 2011年05月04日 14:44
  • 1392

ACE日志例程

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

ACE 日志系统1CallBack 到文件。

#ifdef _DEBUG #pragma comment(lib, "aced.lib") #else #pragma comnent(lib, "ace.lib") #endif #includ...
  • donglipeng2009
  • donglipeng2009
  • 2012年09月03日 21:17
  • 585

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

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

ACE_DEBUG介绍及日志输出

ACE_DEBUG  常规的一些输出消息    ACE_ERROR  会提供程序出错的一些低级消息 2个宏的用法上是一致的    ACE_DEBUG(错误级别,"格式串",变量1...变量N...
  • qq_34233232
  • qq_34233232
  • 2016年09月21日 11:33
  • 88
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ACE的日志入门
举报原因:
原因补充:

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