简化了glog,只保留了写日志文件的功能,只是改写了linux版本,win版本未改写,可以用
LOG(INFO)<< 输出日志
也可用LOG_IF(INFO,condition)<<输出日志
也可直接调用日志类Logger::GetInstance().Error 等方式写日志
初始化时调用 InitLogging(argv[0],INFO,"./log/test");
第一个参数是路径,第二个参数是最低日志级别,第三个参数表示日志文件的前缀和文件夹
FileHelper.h
#ifndef FILEHELPER_H_
#define FILEHELPER_H_
#include <string>
#include <vector>
#include <fstream>
#include <stdio.h>
#ifdef _WIN32
#include <direct.h>
#include <io.h>
#else
#include <stdarg.h>
#include <sys/stat.h>
#endif
namespace FrameWork {
#ifdef _WIN32
#define ACCESS _access
#define MKDIR(a) _mkdir((a))
#else
#define ACCESS access
#define MKDIR(a) mkdir((a),0755)
#endif
class FileHelper {
public:
static bool save(const std::string filename, std::string& content)
{
FILE *file = fopen(filename.c_str(), "wb");
if (file == NULL)
return false;
fwrite(content.c_str(),sizeof(char),content.size(),file);
fclose(file);
return true;
}
// used to open binary file
static bool open(const std::string filename, std::string& content)
{
FILE *file = fopen(filename.c_str(), "rb");
if (file == NULL)
return false;
fseek(file, 0, SEEK_END);
int len = ftell(file);
rewind(file);
content.clear();
char *buffer = new char[len];
fread(buffer, sizeof(char), len, file);
content.assign(buffer, len);
delete []buffer;
//int nRead;
//content.clear();
//char buffer[80];
//while(!feof(file)){
// nRead = fread(buffer,sizeof(char),sizeof(buffer),file);
// if(nRead > 0){
// content.append(buffer);
// }
//}
fclose(file);
return true;
}
// used to open text file
static bool open(const std::string file_name, std::vector<std::string>& lines)
{
std::ifstream file(file_name.c_str(), std::ios::in);
if (!file)
{
return false;
}
lines.clear();
char buffer[BUFFER_SIZE];
while (file.getline(buffer, BUFFER_SIZE, '\n'))
{
lines.push_back(buffer);
}
return true;
}
static bool CreateDir(const char *pszDir)
{
size_t i = 0;
size_t iRet;
size_t iLen = strlen(pszDir);
char* buf=new char[iLen+1];
strncpy(buf,pszDir,iLen+1);
for (i = 0;i < iLen;i ++) {
if (pszDir[i] == '\\' || pszDir[i] == '/') {
buf[i] = '\0';
//如果不存在,创建
iRet = ACCESS(buf,0);
if (iRet != 0) {
iRet = MKDIR(buf);
if (iRet != 0) {
delete[] buf;
return false;
}
}
//支持linux,将所有\换成/
buf[i] = '/';
}
}
delete[] buf;
return true;
}
private:
enum { BUFFER_SIZE = 3000 };
};
} /* namespace FrameWork */
#endif /* FILEHELPER_H_ */
[/code]
Logger.cpp
static void InitPaths(const char* filename,const char* destFolder)
{
memset(_appName,0,MaxFilePathLen);
memset(_appFolder,0,MaxFilePathLen);
memset(_destFolder,0,MaxFilePathLen);
memset(_destPrefix,0,MaxFilePathLen);
strcpy(_appName,filename);
int len = strlen(filename),lend;
int pos = len-1,posd,start;
while(pos >0 && filename[pos] != PathSplitChar)
pos--;
strncpy(_appFolder,filename,pos+1);
lend = strlen(destFolder);
posd = lend-1;
if(destFolder[lend-1] != PathSplitChar) {
//has prefix
while(posd >0 && destFolder[posd] != PathSplitChar)
posd--;
}
if(destFolder[0] == '.' && destFolder[1] == PathSplitChar){
strncpy(_destFolder,filename,pos+1);
start = 2;
} else{
pos = 8;
strcpy(_destFolder,_defaltFolder);
if(destFolder[0] != PathSplitChar){