W
WreWolf
Вот код класса
Если убрать нафиг все static то компилируется и работает, но мне нужно поле Log::szPath глобальным, чтоб при старте программы забить туда значение и забыть о нем
может вы подскажете косяк?
log.h
log.cpp
Если убрать нафиг все static то компилируется и работает, но мне нужно поле Log::szPath глобальным, чтоб при старте программы забить туда значение и забыть о нем
может вы подскажете косяк?
log.h
C++:
#include <iostream>
#include <time.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <winsock2.h>
#include <time.h>
#include <Windows.h>
using namespace std;
class Log;
void tolog(char *log,int level);
void tolog(string log,int level);
char* get_time_string(int mode24);
log.cpp
C++:
#include "log.h"
class Log
{
static char *szPath;
inline string replace(string text, string s, string d)
{
for(unsigned index=0; index=text.find(s, index), index!=std::string::npos;)
{
text.replace(index, s.length(), d);
index+=d.length();
}
return text;
}
static void tofile(char *log)
{
FILE * pFile;
pFile = fopen (szPath,"a");
if (pFile!=NULL) {
fputs (log,pFile);
fclose (pFile);
}
}
public:
void Init(char *path)
{
*szPath=*new char[255];
*szPath=*path;
return;
}
Log()
{
}
~Log()
{
}
static void loggin(char *log,int level)
{
char *rez=new char[sizeof(log)+100];
sprintf(rez,"%s %s\n",get_time_string(1),log);
switch( level)
{
case 1:
tofile(rez);
break;
case 2:
cout<<rez;
tofile(rez);
break;
case 3:
cout<<rez;
break;
}
delete rez;
}
};
//levels:
// 1-Error //только в файл
// 2-Verbose //в файл и на экран
// 3-Debug //только на экран
void tolog(char *log,int level)
{
Log logs;
logs.loggin(log,level);
return;
}
void tolog(string log,int level)
{
char *FileExt = new char[log.size() + 1];
std::strcpy ( FileExt, log.c_str() );
delete FileExt;
Log logs;
logs.loggin(FileExt,level);
return;
}
char* get_time_string(int mode24)
{
static char time_str[12] = {0}; /* Stroes the time as a string */
struct tm *now = NULL;
int hour = 0;
time_t time_value = 0;
time_value = time(NULL); /* Get time value */
now = localtime(&time_value); /* Get time and date structure */
hour = now->tm_hour; /* Save the hour value */
sprintf(time_str,"%02d:%02d:%02d",hour,now->tm_min,now->tm_sec);
return time_str;
}