ACE的日誌輸出之小見

2021-08-22 17:14:15 字數 1824 閱讀 7703

ace裡面只要是可以輸出string的也就是c語言裡面的那種char *字串,就都可以像printf那樣設定格式予以輸出比如:

ace_error_return( (lm_error, ace_text("main!%i%t%s%p\n"), 100, "asdf", ace_text("service configure open!")),

裡面%t%p由系統給定,不用我們自己來,否則出錯,應該是段錯誤,而另外的%i%s就是要認為的輸出了,這裡有乙個問題就是,後門如果出現ace_text()那麼輸出的問題就出現了;個人總結了乙個結論就是自動尋找,即:每乙個格式都要自動尋找後面的輸出,如果在沒有找到對應的格式輸出之前碰到了ace_text這個東西就先輸出它,還有就是它不是作為格式輸出的,有幾個格式比如%p遇到ace_text要後輸出,具體是哪幾個我也不清楚咯,跟printf有點不同:

printf("%s", "asdfasdf\n");而後面的字串是格式輸出,但是ace_text()不是格式輸出的,還有一點跟printf不同的是,輸出部分不在乙個括號裡面,而是在ace_text()的外面比如:

ace_text("main!%i%t%s%p\n"), 100, "asdf"

我們來看看兩個輸出:

1、ace_error_return( (lm_error, ace_text("main!%i,%t,%s,%p\n"), 100, "asdf", ace_text("service configure open!")), 1)

輸出:main!100,682,asdf,service configure open!:no error!

2、ace_error_return( (lm_error, ace_text("main!%i,%t,%p,%s\n"), 100,

ace_text("service configure open!"), "asdf"),

1);輸出:main!100,1792,service configure open!: no error,asdf

ace裡面的日誌一般都是已經設定了輸出物件的,給定一段程式:

#include "ace/os.h"

#include "ace/log_msg.h"

//#define ace_ntrace 0

//#include

//#include

#include "ace/streams.h"

using namespace std;

int ace_tmain(int argc, ace_tchar *argv)

即便是把程式設定了重定向依舊得不到想要的結果,比如重定向到readme.txt:

專案-》××屬性-》配置屬性-》除錯-》命令引數

裡面輸入》readme.txt,即重寫,>>readme.txt就是追加,執行程式你依舊看不到想要的結果:

readme.txt裡面只有:÷

asdf

asdfasdf

沒有我們要的main!100,1792,service configure open!: no error,asdf,這個部分輸出到了stderr了,因此我們就要用ace的重定向來讓輸出到檔案:

#include "ace/os.h"

#include "ace/log_msg.h"

//#define ace_ntrace 0

//#include

//#include

#include "ace/streams.h"

using namespace std;

void foo()

int ace_tmain(int argc, ace_tchar *argv)

以上個人見解而已!

ACE服務端程式設計5 ACE日誌輸出和跟蹤

伺服器程式經常需要在命令列中顯示錯誤訊息 狀態或者用來跟蹤程式的執行路徑,最簡單的方法是使用printf。ace提供了更強大日誌設施 1 可以在編譯時啟用或禁用巨集 2 可以動態的啟用或禁用巨集 3 支援日誌嚴重級別 4 支援日誌重定向 5 支援多執行緒安全和執行緒級配置 使用ace的日誌相關功能,...

ACE篇之十一 ACE容器之六(自調整的二叉樹)

1 ace提供的樹實現為紅黑樹,名為ace rb tree,介面與對映表類似,其實現實際上是乙個值容器。型別定義是 ace rb tree 2 測試類 tree practice.h include ace rb tree.h include dataelement.h 紅黑樹型別封裝成助手模板類l...

改善Objective C的日誌輸出

我該如何在日誌輸出資訊中新增上下文資訊,例如當前方法或者行號。c預處理器提供了一些標準巨集,可以提供當前檔案,行號,或者函式的資訊。另外,objective c有 cmd隱式引數,可以提供當前函式的選擇器,以及將選擇器和類轉換為字串的功能。你可以在除錯或者錯誤處理時在nslog語句中提供這些上下文資...