ACE_DEBUG介紹及日誌輸出

來源:互聯網
上載者:User

 

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;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.