#ifndef FELIX_THE_CAT_LOGGING_LIBRARY_HEADER_FILE_INCLUDED_EJGHJWVNKJNWKJGNKJWGJKGKJHKJH #define FELIX_THE_CAT_LOGGING_LIBRARY_HEADER_FILE_INCLUDED_EJGHJWVNKJNWKJGNKJWGJKGKJHKJH #include #include #include #include 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