#pragma once #include #include #include "FileClass.h" class CLog { public: enum LOG_OPEN_MODE { Log_New, Log_Append }; enum { MB = 1024 * 1024 }; enum { MAX_FILE_SIZE = 10 * MB }; CLog(void); ~CLog(void); bool Open(const char * FileName, LOG_OPEN_MODE mode = Log_New); void Log(const char * Message); void LogF(const char * Message, ...); void LogArgs(const char * Message, va_list & args); bool Empty(void); void Close(void); inline void SetMaxFileSize(uint32_t Size) { m_MaxFileSize = Size; m_FileChangeSize = (uint32_t)(Size * 0.1); } inline void SetTruncateFile(bool Truncate) { m_TruncateFileLog = Truncate; } inline void SetFlush(bool Always) { m_FlushOnWrite = Always; } inline bool IsOpen(void) const { return m_hLogFile.IsOpen(); } inline bool Flush(void) { return m_hLogFile.Flush(); } inline const std::string & FileName(void) const { return m_FileName; } private: CLog(const CLog&); // Disable copy constructor CLog& operator=(const CLog&); // Disable assignment CFile m_hLogFile; bool m_FlushOnWrite; std::string m_FileName; bool m_TruncateFileLog; uint32_t m_FileSize; uint32_t m_MaxFileSize; uint32_t m_FileChangeSize; };