1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2024-11-08 08:47:17 +01:00
SqMod/source/Logger.hpp

400 lines
12 KiB
C++

#ifndef _LOGGER_HPP_
#define _LOGGER_HPP_
// ------------------------------------------------------------------------------------------------
#include "Common.hpp"
// ------------------------------------------------------------------------------------------------
namespace SqMod {
/* ------------------------------------------------------------------------------------------------
* ...
*/
class Logger
{
/* --------------------------------------------------------------------------------------------
* Allow only the smart pointer to delete this class instance as soon as it's not needed.
*/
friend class std::unique_ptr< Logger, void(*)(Logger *) >;
public:
/* --------------------------------------------------------------------------------------------
* ...
*/
static constexpr Uint8 LEVEL_NIL = (1 << 0);
static constexpr Uint8 LEVEL_DBG = (1 << 1);
static constexpr Uint8 LEVEL_MSG = (1 << 2);
static constexpr Uint8 LEVEL_SCS = (1 << 3);
static constexpr Uint8 LEVEL_INF = (1 << 4);
static constexpr Uint8 LEVEL_WRN = (1 << 5);
static constexpr Uint8 LEVEL_ERR = (1 << 6);
static constexpr Uint8 LEVEL_FTL = (1 << 7);
static constexpr Uint8 LEVEL_ANY = 0xFF;
protected:
/* --------------------------------------------------------------------------------------------
* ...
*/
Logger();
/* --------------------------------------------------------------------------------------------
* Copy constructor (disabled).
*/
Logger(Logger const &) = delete;
/* --------------------------------------------------------------------------------------------
* Move constructor (disabled).
*/
Logger(Logger &&) = delete;
/* --------------------------------------------------------------------------------------------
* ...
*/
~Logger();
/* --------------------------------------------------------------------------------------------
* Copy assignment operator (disabled).
*/
Logger & operator=(Logger const &) = delete;
/* --------------------------------------------------------------------------------------------
* Move assignment operator (disabled).
*/
Logger & operator=(Logger &&) = delete;
/* --------------------------------------------------------------------------------------------
* ...
*/
static void _Finalizer(Logger * ptr);
public:
/* --------------------------------------------------------------------------------------------
* ...
*/
typedef std::unique_ptr< Logger, void(*)(Logger *) > Pointer;
/* --------------------------------------------------------------------------------------------
* ...
*/
static Pointer Inst();
/* --------------------------------------------------------------------------------------------
* ...
*/
bool Init();
/* --------------------------------------------------------------------------------------------
* ...
*/
bool Load();
/* --------------------------------------------------------------------------------------------
* ...
*/
void Deinit();
/* --------------------------------------------------------------------------------------------
* ...
*/
void Unload();
/* --------------------------------------------------------------------------------------------
* ...
*/
void Terminate();
/* --------------------------------------------------------------------------------------------
* Called by the core class before the VM is closed to release all resources.
*/
void VMClose();
/* --------------------------------------------------------------------------------------------
* ...
*/
void ToggleConsoleTime(bool enabled);
/* --------------------------------------------------------------------------------------------
* ...
*/
void ToggleFileTime(bool enabled);
/* --------------------------------------------------------------------------------------------
* ...
*/
bool HasConsoleTime() const;
/* --------------------------------------------------------------------------------------------
* ...
*/
bool HasFileTime() const;
/* --------------------------------------------------------------------------------------------
* ...
*/
void SetConsoleLevels(Uint8 levels);
/* --------------------------------------------------------------------------------------------
* ...
*/
void SetFileLevels(Uint8 levels);
/* --------------------------------------------------------------------------------------------
* ...
*/
Uint8 GetConsoleLevels() const;
/* --------------------------------------------------------------------------------------------
* ...
*/
Uint8 GetFileLevels() const;
/* --------------------------------------------------------------------------------------------
* ...
*/
void EnableConsoleLevel(Uint8 level);
/* --------------------------------------------------------------------------------------------
* ...
*/
void EnableFileLevel(Uint8 level);
/* --------------------------------------------------------------------------------------------
* ...
*/
void DisableConsoleLevel(Uint8 level);
/* --------------------------------------------------------------------------------------------
* ...
*/
void DisableFileLevel(Uint8 level);
/* --------------------------------------------------------------------------------------------
* ...
*/
Uint8 GetDebugLevel() const;
/* --------------------------------------------------------------------------------------------
* ...
*/
void SetDebugLevel(Uint8 level);
/* --------------------------------------------------------------------------------------------
* ...
*/
SQInt32 GetVerbosity() const;
/* --------------------------------------------------------------------------------------------
* ...
*/
void SetVerbosity(SQInt32 level);
public:
/* --------------------------------------------------------------------------------------------
* ...
*/
void Send(Uint8 type, bool sub, const char * fmt, va_list args);
/* --------------------------------------------------------------------------------------------
* ...
*/
void Message(Uint8 type, bool sub, const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
void Dbg(const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
void Msg(const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
void Scs(const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
void Inf(const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
void Wrn(const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
void Err(const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
void Ftl(const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
void SDbg(const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
void SMsg(const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
void SScs(const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
void SInf(const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
void SWrn(const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
void SErr(const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
void SFtl(const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
bool cDbg(bool cond, const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
bool cMsg(bool cond, const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
bool cScs(bool cond, const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
bool cInf(bool cond, const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
bool cWrn(bool cond, const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
bool cErr(bool cond, const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
bool cFtl(bool cond, const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
bool cSDbg(bool cond, const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
bool cSMsg(bool cond, const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
bool cSScs(bool cond, const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
bool cSInf(bool cond, const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
bool cSWrn(bool cond, const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
bool cSErr(bool cond, const char * fmt, ...);
/* --------------------------------------------------------------------------------------------
* ...
*/
bool cSFtl(bool cond, const char * fmt, ...);
private:
/* --------------------------------------------------------------------------------------------
* ...
*/
bool m_ConsoleTime;
/* --------------------------------------------------------------------------------------------
* ...
*/
bool m_FileTime;
/* --------------------------------------------------------------------------------------------
* ...
*/
Uint8 m_ConsoleLevels;
/* --------------------------------------------------------------------------------------------
* ...
*/
Uint8 m_FileLevels;
/* --------------------------------------------------------------------------------------------
* ...
*/
String m_LogPath;
/* --------------------------------------------------------------------------------------------
* ...
*/
Uint8 m_DebugLevel;
/* --------------------------------------------------------------------------------------------
* ...
*/
SQInt32 m_Verbosity;
/* --------------------------------------------------------------------------------------------
* ...
*/
Function m_OnMessage;
/* --------------------------------------------------------------------------------------------
* ...
*/
Function m_Format;
};
// --------------------------------------------------------------------------------------------
extern const Logger::Pointer _Log;
} // Namespace:: SqMod
#endif // _LOGGER_HPP_