core/Logger.h
author David Anderson <dvander@alliedmods.net>
Wed Jun 06 06:04:16 2007 +0000 (2007-06-06)
changeset 883 f4eff9faf362
parent 673 fc1d50579d06
child 1231 17badaf66ce4
permissions -rw-r--r--
fixed inheritance not being used in the base menu style when removing clients from the watch list
dvander@592
     1
/**
ds@653
     2
 * vim: set ts=4 :
dvander@592
     3
 * ===============================================================
dvander@592
     4
 * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
dvander@592
     5
 * ===============================================================
dvander@592
     6
 *
dvander@592
     7
 * This file is not open source and may not be copied without explicit
dvander@592
     8
 * written permission of AlliedModders LLC.  This file may not be redistributed 
dvander@592
     9
 * in whole or significant part.
dvander@592
    10
 * For information, see LICENSE.txt or http://www.sourcemod.net/license.php
dvander@592
    11
 *
dvander@592
    12
 * Version: $Id$
dvander@592
    13
 */
dvander@592
    14
dvander@592
    15
#ifndef _INCLUDE_SOURCEMOD_CLOGGER_H_
dvander@592
    16
#define _INCLUDE_SOURCEMOD_CLOGGER_H_
dvander@592
    17
dvander@592
    18
#include <sh_string.h>
dvander@592
    19
#include "sm_globals.h"
dvander@592
    20
dvander@592
    21
using namespace SourceHook;
dvander@592
    22
dvander@592
    23
enum LogType
dvander@592
    24
{
dvander@592
    25
	LogType_Normal,
dvander@592
    26
	LogType_Error
dvander@592
    27
};
dvander@592
    28
dvander@592
    29
enum LoggingMode
dvander@592
    30
{
dvander@592
    31
	LoggingMode_Daily,
dvander@592
    32
	LoggingMode_PerMap,
ds@661
    33
	LoggingMode_Game
dvander@592
    34
};
dvander@592
    35
dvander@616
    36
class Logger : public SMGlobalClass
dvander@592
    37
{
dvander@592
    38
public:
dvander@663
    39
	Logger() : m_Mode(LoggingMode_Daily), m_ErrMapStart(false), 
dvander@663
    40
		m_Active(false), m_DelayedStart(false), m_DailyPrintHdr(false), 
dvander@663
    41
		m_InitialState(true)
dvander@663
    42
	{
dvander@663
    43
	}
dvander@592
    44
public: //SMGlobalClass
dvander@663
    45
	ConfigResult OnSourceModConfigChanged(const char *key, 
dvander@663
    46
		const char *value, 
dvander@663
    47
		ConfigSource source,
dvander@663
    48
		char *error, 
dvander@663
    49
		size_t maxlength);
dvander@592
    50
	void OnSourceModStartup(bool late);
dvander@592
    51
	void OnSourceModAllShutdown();
dvander@673
    52
	void OnSourceModLevelChange(const char *mapName);
dvander@592
    53
public:
dvander@663
    54
	void InitLogger(LoggingMode mode);
dvander@592
    55
	void CloseLogger();
dvander@592
    56
	void EnableLogging();
dvander@592
    57
	void DisableLogging();
dvander@592
    58
	void LogMessage(const char *msg, ...);
dvander@592
    59
	void LogError(const char *msg, ...);
dvander@663
    60
	void LogFatal(const char *msg, ...);
dvander@592
    61
	void MapChange(const char *mapname);
dvander@592
    62
	const char *GetLogFileName(LogType type) const;
dvander@592
    63
	LoggingMode GetLoggingMode() const;
dvander@592
    64
private:
dvander@592
    65
	void _CloseFile();
dvander@592
    66
	void _NewMapFile();
ds@661
    67
	void _PrintToGameLog(const char *fmt, va_list ap);
dvander@592
    68
private:
dvander@592
    69
	String m_NrmFileName;
dvander@592
    70
	String m_ErrFileName;
dvander@592
    71
	String m_CurMapName;
ds@661
    72
	LoggingMode m_Mode;
dvander@592
    73
	int m_CurDay;
dvander@592
    74
	bool m_ErrMapStart;
dvander@592
    75
	bool m_Active;
dvander@592
    76
	bool m_DelayedStart;
dvander@592
    77
	bool m_DailyPrintHdr;
ds@661
    78
	bool m_InitialState;
dvander@592
    79
};
dvander@592
    80
dvander@616
    81
extern Logger g_Logger;
dvander@592
    82
dvander@592
    83
#endif // _INCLUDE_SOURCEMOD_CLOGGER_H_