Files

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