-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathFileLogger.cpp
executable file
·90 lines (85 loc) · 2.19 KB
/
FileLogger.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include "FileLogger.h"
FileLogger::FileLogger(void):BaseLogger()
{
m_LogType = LOG_TYPE_FILE;
}
FileLogger::~FileLogger(void)
{
}
void FileLogger::Log(E_LOG_LEVEL level, const char * strMsg, const char * file, const unsigned long line, const char * function)
{
char logMsg[MAX_LOG_LENGTH];
memset(logMsg, 0, sizeof(logMsg));
#ifdef WIN32
sprintf_s(logMsg, MAX_LOG_LENGTH, "[%s] [%s] %s, File: %s, Line: %lu, Function: %s\n",
GetSystemTime(),
BaseLogger::LEVEL_STRING[level], strMsg,
file, line, function);
#else
snprintf(logMsg, MAX_LOG_LENGTH, "[%s] [%s] %s, File: %s, Line: %lu, Function: %s\n",
GetSystemTime(),
BaseLogger::LEVEL_STRING[level], strMsg,
file, line, function);
#endif
_WriteLogToFile(logMsg, file);
}
void FileLogger::_WriteLogToFile(const char * strMsg, const char * filename)
{
char logfile[MAX_FILE_NAME_LENGTH];
memset(logfile, 0, sizeof(logfile));
#ifdef WIN32
#ifdef LOG_PATH
strcpy_s(logfile, sizeof(logfile), LOG_PATH);
#else
strcpy_s(logfile, sizeof(logfile), "./log/");
#endif
#else
#ifdef LOG_PATH
strncpy(logfile, LOG_PATH, sizeof(LOG_PATH));
#else
strncpy(logfile, "./log/", sizeof("./log/");
#endif
#endif
const char *ext = ".log";
const char *pos = NULL;
const char *newpos = NULL;
#ifdef WIN32
pos = strrchr(filename, '\\');
#else
pos = strrchr(filename, '/');
#endif
if(pos != NULL){
newpos = pos;
}else{
newpos = filename;
}
newpos = pos != NULL ? (pos+1) : filename;
FILE * fp;
#ifdef WIN32
// 쇱꿴log만커쩌
if(_access(logfile, 0) == -1){
// 눼쉔log만커쩌
_mkdir(logfile);
}
strcat_s(logfile, sizeof(logfile), newpos);
strcat_s(logfile, sizeof(logfile), ext);
fopen_s(&fp, logfile, "at+");
#else
// 쇱꿴log만커쩌
if(access(logfile, 0) == -1){
// 눼쉔log만커쩌
mkdir(logfile, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
}
strcat(logfile, newpos);
strcat(logfile, ext);
fp = fopen(logfile, "at+");
#endif
if (NULL == fp)
{
printf("Open file \"%s\" failed.", filename);
return;
}
fprintf(fp, "%s", strMsg);
fflush(fp);
fclose(fp);
}