亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++日志記錄類實例解析

2020-01-26 15:27:17
字體:
來源:轉載
供稿:網友

本文所述實例是從一個Red Hat開源項目里面扒出來的,非常實用!讀者還可以根據自身需求加以修改!完整源碼如下:

Log.h文件部分:

#ifndef __LOG_H__#define __LOG_H__#include <stdio.h>#include <tchar.h>#include <crtdbg.h>#include <windows.h>#include <time.h>#include <sys/timeb.h>class CLog {public:  ~CLog();  static CLog* get(TCHAR* path = NULL);  void printf(const char* format, ...);private:  CLog(FILE* handle);private:  static CLog* _log;  FILE* _handle;};enum { LOG_DEBUG, LOG_INFO, LOG_WARN, LOG_ERROR, LOG_FATAL};#ifdef _DEBUGstatic unsigned int log_level = LOG_DEBUG;#elsestatic unsigned int log_level = LOG_INFO;#endif#define PRINT_LINE(type, format, datetime, ms, ...)           /  printf("%lu::%s::%s,%.3d::%s::" format "/n", GetCurrentThreadId(), type, datetime, ms, /      __FUNCTION__, ## __VA_ARGS__);#define LOG(type, format, ...) do {                   /  if (type >= log_level && type <= LOG_FATAL) {            /    CLog* log = CLog::get();                   /    const char *type_as_char[] = { "DEBUG", "INFO", "WARN", "ERROR", "FATAL" }; /    struct _timeb now;                       /    struct tm today;                        /    char datetime_str[20];                     /    _ftime_s(&now);                         /    localtime_s(&today, &now.time);                 /    strftime(datetime_str, 20, "%Y-%m-%d %H:%M:%S", &today);    /    if (log) {                           /      log->PRINT_LINE(type_as_char[type], format, datetime_str, now.millitm, ## __VA_ARGS__); /    } else {                            /      PRINT_LINE(type_as_char[type], format, datetime_str, now.millitm, ## __VA_ARGS__); /    }                                /  }                                  /} while(0)#define log_printf(format, ...) LOG(LOG_INFO, format, ## __VA_ARGS__)#define LOG_INFO(format, ...) LOG(LOG_INFO, format, ## __VA_ARGS__)#define LOG_WARN(format, ...) LOG(LOG_WARN, format, ## __VA_ARGS__)#define LOG_ERROR(format, ...) LOG(LOG_ERROR, format, ## __VA_ARGS__)#define DBGLEVEL 1000#define DBG(level, format, ...) do {      /  if (level <= DBGLEVEL) {          /    LOG(LOG_DEBUG, format, ## __VA_ARGS__); /  }                      /} while(0)#define ASSERT(x) _ASSERTE(x)#endif

Log.cpp文件部分:

#include "Log.h"#include <stdio.h>#include <stdarg.h>#include <share.h>#define LOG_ROLL_SIZE (1024 * 1024)CLog* CLog::_log = NULL;CLog::CLog(FILE* handle)  : _handle(handle){  _log = this;}CLog::~CLog(){  if (_log && _handle) {    fclose(_handle);    _log = NULL;  }}CLog* CLog::get(char* path){  if (_log) {    return _log;  } if(!path) { path = "dll.log"; }  DWORD size = 0;  HANDLE file = CreateFile(path, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,               NULL);  if (file != INVALID_HANDLE_VALUE) {    size = GetFileSize(file, NULL);    CloseHandle(file);  }  if (size != INVALID_FILE_SIZE && size > LOG_ROLL_SIZE) {    TCHAR roll_path[MAX_PATH];    sprintf(roll_path, "%s.1", path);    if (!MoveFileEx(path, roll_path, MOVEFILE_REPLACE_EXISTING)) {      return NULL;    }  }  FILE* handle = fopen(path, "a+");  if (!handle) {    return NULL;  }  _log = new CLog(handle);  return _log;}void CLog::printf(const char* format, ...){  va_list args;  va_start(args, format);  vfprintf(_handle, format, args);  va_end(args);  fflush(_handle);}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久综合九色九九| 国产视频自拍一区| 91亚洲精品一区二区| 久久久久久久久久久久久久久久久久av| 日日骚av一区| 国产成人福利夜色影视| 欧美性极品少妇精品网站| 国产福利视频一区| 国产在线视频91| 久久久久久国产精品三级玉女聊斋| 国产精品久久久久免费a∨| 九九视频直播综合网| 欧美在线影院在线视频| 日韩一区二区av| 麻豆国产va免费精品高清在线| 国产成人97精品免费看片| 欧美精品成人91久久久久久久| 亚洲国产日韩一区| 欧美成aaa人片免费看| 国产成人精品日本亚洲专区61| 日韩精品在线免费播放| 亚洲肉体裸体xxxx137| 日韩在线一区二区三区免费视频| 国产精品久久久久久久久粉嫩av| 国产一区二区三区日韩欧美| 久久人人爽人人爽人人片亚洲| 国产成人精品综合久久久| 亚洲另类xxxx| 久久国产精品免费视频| 午夜精品福利电影| 国产成人免费av电影| 国产精品草莓在线免费观看| 中文字幕国产精品| 国产日韩亚洲欧美| 成人激情综合网| 亚洲成人教育av| 日韩精品在线观看网站| 欧美色播在线播放| 亚洲欧美制服第一页| 日韩精品欧美国产精品忘忧草| 国产欧美亚洲视频| 欧美激情久久久久| 国产成人亚洲综合91| 国产精品久久婷婷六月丁香| 国产噜噜噜噜噜久久久久久久久| 久久99精品国产99久久6尤物| 91国偷自产一区二区三区的观看方式| 成人黄在线观看| 国产精国产精品| 91免费国产视频| 亚洲精品黄网在线观看| 日韩久久午夜影院| 成人有码在线视频| 国产成人拍精品视频午夜网站| 欧美中文字幕视频在线观看| 日韩极品精品视频免费观看| 粉嫩老牛aⅴ一区二区三区| 欧美裸体xxxx极品少妇| 性色av香蕉一区二区| 亚洲一区中文字幕| 日本a级片电影一区二区| 91精品久久久久久久久久另类| 96国产粉嫩美女| 欧美专区在线视频| 日韩av在线免播放器| 亚洲日本成人网| 欧美一乱一性一交一视频| 日韩国产在线看| 日韩精品免费综合视频在线播放| 综合网日日天干夜夜久久| 日韩亚洲精品视频| 欧美日韩在线第一页| 在线视频日本亚洲性| 中文日韩在线观看| 日韩欧美成人网| 国产a级全部精品| 2019最新中文字幕| 精品国产区一区二区三区在线观看| 欧美精品久久久久久久| 久久影院在线观看| 欧美亚洲日本网站| 精品久久久久久亚洲精品| 精品毛片三在线观看| 国产欧美日韩最新| 国内精品久久久久久久| 成人久久18免费网站图片| 91探花福利精品国产自产在线| 亚洲另类xxxx| 日韩中文字幕在线观看| 国产在线98福利播放视频| 欧美又大又硬又粗bbbbb| 欧美综合一区第一页| 中文字幕在线国产精品| 国产视频久久网| 97视频在线观看免费高清完整版在线观看| 一区二区三区精品99久久| 国产欧美精品在线| 91精品综合视频| 韩国三级日本三级少妇99| 欧美精品激情在线| 成人情趣片在线观看免费| 日本成人在线视频网址| 亚洲精品一区二区三区婷婷月| 国产精品99久久久久久白浆小说| 久99九色视频在线观看| 欧美激情一级二级| 欧美国产第二页| 成人av番号网| 国产999精品久久久影片官网| 九九热这里只有精品免费看| 国产激情久久久久| 亚洲免费视频观看| 精品久久久免费| 久久精品国产v日韩v亚洲| 尤物yw午夜国产精品视频| 奇米4444一区二区三区| 日韩理论片久久| 日韩电影中文字幕一区| 欧美与欧洲交xxxx免费观看| 亚洲精品www久久久久久广东| 精品国产一区二区三区久久久| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产一区玩具在线观看| 日韩在线一区二区三区免费视频| 91九色视频导航| 欧亚精品中文字幕| 国产精品91久久久久久| 欧美日韩视频在线| 日韩中文理论片| 中文字幕精品在线| 91精品国产九九九久久久亚洲| 国产亚洲成精品久久| 亚洲精品按摩视频| 国产91免费观看| 欧美国产精品va在线观看| 国产成人久久久| 精品久久久久久中文字幕大豆网| 欧美限制级电影在线观看| 欧美成人高清视频| 日韩在线观看免费av| 91精品久久久久久久久| 成人精品视频99在线观看免费| 欧洲成人免费aa| 福利视频一区二区| 亚洲免费电影在线观看| 精品中文字幕乱| 久久久国产成人精品| 91精品国产成人www| 欧美视频精品一区| 日韩影视在线观看| 中文字幕久精品免费视频| 伊人久久综合97精品| 这里只有精品在线播放| 国产成人福利夜色影视| 清纯唯美日韩制服另类| 98精品国产高清在线xxxx天堂| 精品视频在线播放| 精品日韩美女的视频高清| 欧日韩在线观看| 亚洲v日韩v综合v精品v| 日韩精品免费在线视频观看| 亚洲欧美国产日韩天堂区| 国内精品免费午夜毛片| 国产欧美精品日韩精品|