50 lines
1.8 KiB
C++
50 lines
1.8 KiB
C++
#ifndef FELIX_THE_CAT_LOGGING_LIBRARY_HEADER_FILE_INCLUDED_EJGHJWVNKJNWKJGNKJWGJKGKJHKJH
|
|
#define FELIX_THE_CAT_LOGGING_LIBRARY_HEADER_FILE_INCLUDED_EJGHJWVNKJNWKJGNKJWGJKGKJHKJH
|
|
|
|
#include <pthread.h>
|
|
|
|
#include <fstream>
|
|
#include <iostream>
|
|
#include <string>
|
|
|
|
using namespace std;
|
|
|
|
// библиотечка, выполняющая запись в логи
|
|
// два метода - один мегафайл или много
|
|
// файлов по одному на каждый день
|
|
const int LIBLOGSINGLEFILE = 1;
|
|
const int LIBLOGDAYFILES = 2;
|
|
const int LIBLOGNUMRETRIESTOOPEN = 1;
|
|
|
|
|
|
class LogFile
|
|
{
|
|
private:
|
|
// запрещаем копирование и присваивание лог-файла (чтобы FILE* не копипастился почем зря)
|
|
// Передаем всегда указатели на лог
|
|
LogFile(const LogFile &l);
|
|
void operator=(const LogFile &l);
|
|
bool initialized;
|
|
public:
|
|
// mutex для блокирования дескриптора файла (чтобы толпой в один дескриптор не писать)
|
|
pthread_mutex_t filemutex;
|
|
// файл для записи
|
|
FILE *file;
|
|
// и его имя
|
|
string lastname;
|
|
int logmethod; // метод записи (смтор константы)
|
|
string logpath; // куда писать
|
|
string fileprefix; // префикс, который перед файлами генерировать
|
|
bool reopen; // нужно ли каждый раз переоткрывать лог-файл
|
|
LogFile();
|
|
void InitLogging(string logpath, int method, string prefix = "", bool reopen = false);
|
|
void LogString(string s, string pfx = "");
|
|
FILE *OpenFileWithRetries(string fname, const char *mode);
|
|
};
|
|
|
|
string GetHex(unsigned char c);
|
|
string GetHexString(unsigned int a);
|
|
|
|
|
|
#endif
|