zoukankan      html  css  js  c++  java
  • ACE_DEBUG介绍及日志输出

    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 "));
    ACE_LOG_MSG->clr_flags (ACE_Log_Msg::STDERR);
    // 这个消息将不被输出,因为标志位清除了
    ACE_DEBUG ((LM_DEBUG,
    "second message "));
    ACE_LOG_MSG->set_flags (ACE_Log_Msg::OSTREAM);
    //这个消息将不被输出,因为流的实体尚未定义
    ACE_DEBUG ((LM_DEBUG,
    "third message "));
    //建立一个流实体,指向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 "));
    ACE_LOG_MSG->set_flags (ACE_Log_Msg::STDERR);
    // 这个消息将同时输出到文件和STDERR
    ACE_DEBUG ((LM_DEBUG,
    "fifth message "));
    return 0;
    }

  • 相关阅读:
    eclipse 远程debug tomcat web项目
    阿里巴巴fastjson的使用
    STS 3.6.4 SpringMVC 4.1.6 Hibernate 4.3.8 MySQL
    Ubuntu su 认证失败
    mysql mha高可用架构的安装
    Swift开发教程--关于Existing instance variable '_delegate'...的解决的方法
    设计模式-适配器模式(Go语言描写叙述)
    Xcode6.3 怎样使用Leaks查看内存泄露
    java中的subString具体解释及应用
    出走三上海篇
  • 原文地址:https://www.cnblogs.com/wangyonglong/p/5178498.html
Copyright © 2011-2022 走看看