ACE Log Meg 怎麼樣列印日誌?

2021-06-18 21:05:31 字數 2587 閱讀 8535

ace_log_msg日誌  

2008-09-20 17:33:28|  分類: c/vc/c++ |字型大小 訂閱

日誌級別:

lm_debug:除錯資訊;

lm_trace:指示函式呼叫次序的跟蹤訊息;

lm_info:訊息汗有通常只在程式除錯時使用的資訊;

lm_notice:不是出錯的情況,而是可能需要特別處理的情況;

lm_warning:警告資訊;

lm_error:錯誤資訊;

lm_critical:緊急情況,比如:硬體裝置出錯;

lm_alert:應該立即糾正的情況,比如系統資料庫損壞;

lm_emergency:萬分緊急的情況,通常會廣播給所有使用者;

部分日誌格式化指令:

%l:日誌巨集所處的行號,與c裡面的巨集__line__對應;

%n:日誌巨集所在的檔名稱,與c裡面的巨集__file__對應;

%d:當前時間戳格式,與c裡面的巨集__date__、__time__對應;

%t:當前時間格式,與c裡面的巨集__time__對應;

%t: 呼叫執行緒的執行緒id;

%m:訊息級別的文字形式;如:lm_debug、lm_info、lm_error等等;

%c:格式化單個字元,與printf()的%c對應;

%c:格式化char*型別的c字串;

%s:格式化ace_tchar*型別的ace字串;

%w:格式化wchar_t型別的寬字元;

%w:格式化wchar_t*型別的寬字串;

%i、%d、%r:格式化成十進位制格式;

%x、%x:格式化成十六進製制格式;

輸出日誌的巨集:

ace_debug((log_level,format_string,va_list));

ace_error((log_level,format_string,va_list));

ace_trace((string));在該巨集出現的地方列印行號、檔名以及string;

ace_return(value):不列印訊息,直接返回,返回值為value;

ace_error_return((level,format_string, va_list), value):列印資訊,然後返回,返回值為value;

ace_error_init(value, flags);把op_status設定為value,把日誌記錄器的選項標記設定為falgs;

ace_error_break((level, format_string, va_list));列印資訊,並退出while、for、do...while等迴圈;

日誌巨集是否產生日誌方法呼叫,由三個配置選項在編譯時的值決定:ace_ndebug、ace_ntrace、ace_nologging;它們都被編譯成「不」,所以:

#define ace_ndebug  0  //除錯

#define ace_ndebug  1  //不除錯

#define ace_ntrace  0  //跟蹤

#define ace_ntrace  1  //不跟蹤

#define ace_nologging  0   //記錄日誌

#define ace_nologging  1   //不記錄日誌

日誌級別掩碼的範圍:

ace_log_msg::process: 指定process,獲取或設定程序範圍內的掩碼,會影響所有ace_log_msg例項的日誌嚴重性;

ace_log_msg::thread: 每個ace_log_msg例項都可以有自己的嚴重性掩碼,指定thread可以獲取或設定該掩碼;ace_log_msg類實現了日誌訊息格式化功能;ace為每個新派生的執行緒自動維護乙個ace_log_msg類的單體例項,其中也包括主線程;要獲取ace_log_msg類的單體例項的指標,可以使用快捷方式ace_log_msg.為了能在正確的ace_log_msg單體例項上發出呼叫,所有的ace日誌都使用了巨集ace_log_msg;你幾乎沒有理由直接初始化ace_log_msg;

ace自動為每個新派生的執行緒建立乙個新的ace_log_msg例項,從而讓每個執行緒都有各自的日誌輸出;所以,通常把ace_log_msg視為執行緒專有的物件;

禁用和啟用日誌級別:

在評估日誌訊息的嚴重性級別時,既評估程序範圍內的嚴重性掩碼,也評估執行緒級的每個例項的嚴重性掩碼;這兩個範圍中的任何乙個範圍啟用了該訊息的嚴重級別,那麼這條日誌訊息就會被記錄到日誌中;預設情況下,在程序範圍內,所有的位都為1,表示啟用每乙個嚴重級別;而在例項範圍內,所有的位都是0,表示禁用每乙個嚴重級別;因為程序範圍內的所有位預設都是1,所以無論該日誌訊息是何種嚴重性,它都會被記錄到日誌中;要讓每個執行緒自己決定把哪些嚴重級別記錄到日誌中,可以先把程序範圍內的所有位都置0,並允許每個執行緒設定自己的每個嚴重性掩碼;例如:下面的**在程序級禁用所有嚴重級別的日誌記錄,而在當前執行緒中只啟用lm_debug和lm_notice嚴重性:

使用ace_log_msg->priority_mask()方法來啟用和禁用日誌嚴重級別;

ace_log_msh->priority_mask(0, ace_log_msg::process);

ace_log_msh->priority_mask(lm_debug | lm_notice, ace_log_msg::thread);

怎麼樣列印cxgrid過濾後的資料

用語句cxgriddbtableview.controller.filter.filteringtext獲得篩選語句 你可以在程式中用adoquery來接受這條語句 還可以自己擴充套件 fsatreport的資料集指向query就可以了 試試。adoquery1.filtered true try ...

立方網怎麼樣

立方網號稱自己是中國第一家lbs 也有傳言facebook的時間軸就是抄襲的立方網。照理說,這樣的公司應該朝氣蓬勃 勇於創新的企業。但是就在最近,白雲黃鶴一名學子爆出在立方網的種種不爽,不管真實性怎麼樣,對即將找工作的同學也是一種參考,文章如下 11年畢業,畢業後去了廣州的一家國企裡面,待了大半年的...

怎麼樣定義常量

一 怎麼定義常量?1.自定義常量 必須用函式define 定義 定義完後其值不能再改變了 使用時直接用常量名,不能像變數一樣在前面加 s 2 系統常量 file php程式檔名 line php程式檔案行數 php version 當前解析器的版本號 php os 執行當前php版本的作業系統名稱 ...