core/CLogger.h
author Borja Ferrer <faluco@alliedmods.net>
Fri Jan 05 00:42:22 2007 +0000 (2007-01-05)
changeset 268 d6fed4f05e07
parent 266 125549675242
child 270 04f8bbe51beb
permissions -rw-r--r--
Fixed CPlayer init, it was called too early.
nothing important on the logger
     1 #ifndef _INCLUDE_SOURCEMOD_CLOGGER_H_
     2 #define _INCLUDE_SOURCEMOD_CLOGGER_H_
     3 
     4 #include <time.h>
     5 #include "sourcemm_api.h"
     6 #include <sh_string.h>
     7 #include "sourcemod.h"
     8 #include "sm_version.h"
     9 
    10 using namespace SourceHook;
    11 
    12 enum LogType
    13 {
    14 	LogType_Normal,
    15 	LogType_Error
    16 };
    17 
    18 enum LoggingMode
    19 {
    20 	LoggingMode_Daily,
    21 	LoggingMode_PerMap,
    22 	LoggingMode_HL2
    23 };
    24 
    25 class CLogger
    26 {
    27 public:
    28 	CLogger() : m_PrntMapname(false), m_ErrMapStart(false), m_Active(false), m_DelayedStart(false), m_DailyPrintHdr(false) {}
    29 public:
    30 	void InitLogger(LoggingMode mode, bool startlogging);
    31 	void CloseLogger();
    32 	void EnableLogging();
    33 	void DisableLogging();
    34 	void LogMessage(const char *msg, ...);
    35 	void LogMessageEx(LogType type, const char *msg, ...);
    36 	void MapChange(const char *mapname);
    37 	const char *GetLogFileName(LogType type);
    38 	LoggingMode GetLoggingMode();
    39 private:
    40 	void _CloseFile();
    41 	void _NewMapFile();
    42 	void _PrintToHL2Log(const char *fmt, ...);
    43 private:
    44 	String m_NrmFileName;
    45 	String m_ErrFileName;
    46 	String m_CurMapName;
    47 	LoggingMode m_mode;
    48 	int m_CurDay;
    49 	bool m_PrntMapname;
    50 	bool m_ErrMapStart;
    51 	bool m_Active;
    52 	bool m_DelayedStart;
    53 	bool m_DailyPrintHdr;
    54 };
    55 
    56 extern CLogger g_Logger;
    57 
    58 inline const char *CLogger::GetLogFileName(LogType type)
    59 {
    60 	switch (type)
    61 	{
    62 	case LogType_Normal:
    63 		{
    64 			return m_NrmFileName.c_str();
    65 		}
    66 	case LogType_Error:
    67 		{
    68 			return m_ErrFileName.c_str();
    69 		}
    70 	default:
    71 		{
    72 			return "";
    73 		}
    74 	}
    75 }
    76 
    77 inline LoggingMode CLogger::GetLoggingMode()
    78 {
    79 	return m_mode;
    80 }
    81 
    82 inline void CLogger::EnableLogging()
    83 {
    84 	if (m_Active)
    85 	{
    86 		return;
    87 	}
    88 	m_Active = true;
    89 	LogMessage("Logging enabled manually by user.");
    90 }
    91 
    92 inline void CLogger::DisableLogging()
    93 {
    94 	if (!m_Active)
    95 	{
    96 		return;
    97 	}
    98 	LogMessage("Logging disabled manually by user.");
    99 	m_Active = false;
   100 }
   101 
   102 #endif // _INCLUDE_SOURCEMOD_CLOGGER_H_