1. 程式人生 > >自己編寫的 C++ 超輕量級日誌類

自己編寫的 C++ 超輕量級日誌類

生日 輸出時間 hello 默認 include 行數 ble lease std

【自己編寫的 C++ 超輕量級日誌類(兼容vc++6.0、vs2010、vs2015)】

先來看效果:

【測試文件:test.cpp】

/*
作者:閆文山

時間:2017/07/02

介紹:
本日誌類功能強大:

1、小巧可愛,全程序(YLog.h+YLog.cpp)不過一百余行而已,比之網上其他的如log4cpp等堪稱超輕量級;

2、可輸出每條日誌信息的日誌級別、輸出時間(可精確到毫秒級)、所在程序文件名、所在行數、日誌信息(支持可變長、標準格式化 %s,%d,%f 等參數);

3、兼容性強大,在vc++6.0、vs2010、vs2015上都測試通過;

4、構造函數為YLog(const int type, const int level,std::string logname="");

type:可定義每一個日誌文件的輸出方式,支持每次程序運行追加(YLOG_ADD)或覆蓋(YLOG_OVER)之前的日誌文件;

level:可定義下限級別有嚴格程度從低到高的TRACE < INFO < WARNING < ERROR < FATAL < RELEASE 六種日誌級別,僅當調用日誌輸出函數的輸出級別高於定義下限級別時才會往日誌文件中寫日誌;下限設為最高release級別時不會產生日誌文件;

logname:可定義每一個日誌輸出的文件路徑,支持相對路徑與絕對路徑,文件夾不存在依然能自己創建;可以省略不寫,則默認在當前文件夾下產生對應程序名稱的日誌文件。
*/ #include "YLog.h" int main(){ //創建日誌對象log1,日誌輸出文件為絕對路徑的"D:\\y1.log",如果存在則追加;日誌輸出下限級別為INFO級別 YLog log1(YLOG_ADD, YLOG_INFO,"D:\\y1.log"); //創建日誌對象log2,日誌輸出文件為相對路徑的"y2.log",如果存在則覆蓋;日誌輸出下限級別為ERROR級別 YLog log2(YLOG_OVER, YLOG_ERROR,"y2.log"); int a = 256; double b = 0.789; std::
string c = "hello"; log1.w(YFL,YLOG_INFO, "info級別的日誌輸出:%d",a);//INFO級別不低於log1的下限INFO級別,正常寫入日誌文件 a++; log1.w(YFL,YLOG_WARNING, "warning級別的日誌輸出:%d",a);//正常寫入 a++; log1.w(YFL,YLOG_ERROR, "error級別的日誌輸出:%d",a);//正常寫入 a++; log1.w(YFL,YLOG_FATAL,"fatal級別的日誌輸出:%d,%f,%s",a,b,c.c_str());//
正常寫入 log2.w(YFL,YLOG_INFO, "info級別的日誌輸出:%f",b);//INFO級別低於log2的下限ERROR級別,不寫入日誌 b*=10; log2.w(YFL,YLOG_WARNING, "warning級別的日誌輸出:%f",b);//不寫入日誌 b*=10; log2.w(YFL,YLOG_ERROR, "error級別的日誌輸出:%f",b);//正常寫入 b*=10; log2.w(YFL,YLOG_FATAL,"fatal級別的日誌輸出:%d,%f,%s",a,b,c.c_str());//正常寫入 return 0; }

【輸出日誌1:D:\\y1.log】

技術分享

【輸出日誌2:y2.log】

技術分享

日誌類,就是把程序運行的相應信息保存到日誌文件中以供查看。

本日誌類功能強大:

1、小巧可愛,全程序(YLog.h+YLog.cpp)不過一百余行而已,比之網上其他的如log4cpp等堪稱超輕量級;

2、可輸出每條日誌信息的日誌級別、輸出時間(可精確到毫秒級)、所在程序文件名、所在行數、日誌信息(支持可變長、標準格式化 %s,%d,%f 等參數);

3、兼容性強大,在vc++6.0、vs2010、vs2015上都測試通過;

4、構造函數為YLog(const int type, const int level,std::string logname="");

type:可定義每一個日誌文件的輸出方式,支持每次程序運行追加(YLOG_ADD)或覆蓋(YLOG_OVER)之前的日誌文件;

level:可定義下限級別有嚴格程度從低到高的TRACE < INFO < WARNING < ERROR < FATAL < RELEASE 六種日誌級別,僅當調用日誌輸出函數的輸出級別高於定義下限級別時才會往日誌文件中寫日誌;下限設為最高release級別時不會產生日誌文件;

logname:可定義每一個日誌輸出的文件路徑,支持相對路徑與絕對路徑,文件夾不存在依然能自己創建;可以省略不寫,則默認在當前文件夾下產生對應程序名稱的日誌文件。

【附:下載鏈接http://download.csdn.net/detail/yws_swy/9886382】

自己編寫的 C++ 超輕量級日誌類