**託管在github:
在開發過程中,已經有現成的日誌元件了,可以直接使用,但在平時自己開發的一些工具時,並不能直接使用公司現有的日誌庫。所以就開始自己造輪子,並整合到自己的**庫中去,方便以後復用,提高開發效率。
在開發過程中,復用了很多以前的**,如模板佇列等,所以有自己的**庫是很重要的一件事,可以極大的提高開發效率,這也是避免造輪子的過程。
由於該元件實現比較簡單,只實現了文字日誌,如資料庫日誌,網路日誌等均未實現,但可以在現有模組進行擴充套件。 就在這個地方對結構進行下說明,在網路**元件中,並未敘述內部實現的機制,因為比較繁瑣,但有內部機制的詳細說明。
#define log_exit 0 //致命錯誤,程式即將退出
#define log_error 1 //錯誤
#define log_warning 2 //程式狀態警告
#define log_info 3 //相關資訊輸出
#define log_debug 4 //除錯狀態
日誌型別和日誌檔案一一對應,如計費日誌,執行日誌等,同時支援多個檔案輸出
內部採用了迴圈佇列的方式,減少緩衝的重複分配和釋放
1.clog:提供對外介面:
.日誌模組初始化 init
/// log_level 內部日誌等級
/// log_name 每種type對應的日誌名(可以是路徑)
///
void init(int log_level, std::vector
log_name);
2.寫日誌文字資料
///@brief:寫日誌資訊
///@param: log_type -1 表示直接輸出終端 , 0,1,2,3為log_name對應下的日誌檔名
/// -2,-3等向下擴充套件,如網路日誌,資料庫日誌等
void write_log(int log_type, int log_level, const
char* buf, ...);
3.寫資料日誌,會將資料轉化成16進製制
///@brief:寫資料資訊,會寫 16進製制資料和ascii資料 用於對資料檢測和除錯狀態下
///@param:buf資料緩衝區
/// len緩衝區長度
void write_data(int log_type, int log_level, const
char* buf, int len);
4.clogoutput 日誌的具體實現
5.cmutex 互斥鎖
6.cqueuealloc 緩衝佇列
7.cpubtools 積累的公共庫函式
8.cthread 現成基類
9.cprocusqueue 預分配對列,採用了生產者消費者模型
/*
*@brief:安全佇列測試模板,由於作業系統為執行緒時間片的配置等因素,在進行密集投遞資料時,
* 建議將佇列大小設定成較大
*/#include
#include
#include
#include
#include "log.h"
#define log_run 0 //執行日誌
#define log_count 1 //計費日誌
#define log_test 2 //錯誤狀態日誌
int main(void)
while (1)
return
0;}
01 日誌元件XLog
xlog為xcode的日誌元件,為系統基本功能。使用示例 1 新建winform程式 2 引用newlife.core.dll檔案 3 系統啟動前宣告用於winform程式,在program.cs中 xtrace.usewinform xtrace.writeline 系統啟動 4 用法 正常使用為...
Apche日誌系列 4 日誌分析
儘管日誌檔案中包含著大量有用的資訊,但這些資訊只有在經過深入挖掘之後才能夠最大限度地發揮作用。本文首先討論了能夠從日誌檔案獲得的資訊以及不能從日誌檔案獲得的資訊,然後介紹了幾種優秀的日誌分析工具以及如何自己程式設計分析日誌檔案。一 可以得到哪些資訊 4月4日 我們面臨的問題是,雖然日誌檔案中包含了大...
Log4 日誌級別
日誌記錄器 logger 是日誌處理的核心元件。log4j具有5種正常級別 level 1.static level debug debug level指出細粒度資訊事件對除錯應用程式是非常有幫助的。2.static level info info level表明 訊息在粗粒度級別上突出強調應用程式...