Files
2025-04-15 22:27:20 -04:00

178 lines
5.5 KiB
SourcePawn

#pragma semicolon 1
#include <sourcemod>
#if defined INFO_INCLUDES
#include "../info/constants.sp"
#include "../info/enums.sp"
#include "../info/variables.sp"
#endif
enum TDLogLevel
{
TDLogLevel_None = 0, // disables all logging
TDLogLevel_Error = 1, // is for critical errors, the plugin may no longer work correctly
TDLogLevel_Warning = 2, // is for important warnings, the plugin will continue to work correctly
TDLogLevel_Info = 3, // is for informative messages, typically used for deployment
TDLogLevel_Debug = 4, // is for debug messages, this level is useful during development
TDLogLevel_Trace = 5 // is for trace messages, this level is usually only needed when debugging a problem
};
enum TDLogType
{
TDLogType_File = 0, // logs to SourceMod logs
TDLogType_Console = 1, // logs to server console
TDLogType_FileAndConsole = 2 // logs to SourceMod logs and server console
};
static TDLogLevel m_iLogLevel = TDLogLevel_Info;
static TDLogType m_iLogType = TDLogType_FileAndConsole;
stock void Log_Initialize(TDLogLevel iLogLevel = TDLogLevel_Info, TDLogType iLogType = TDLogType_FileAndConsole) {
m_iLogLevel = iLogLevel;
m_iLogType = iLogType;
}
stock void Log(TDLogLevel iLogLevel, const char[] sMessage, any...) {
if (m_iLogLevel >= iLogLevel) {
char sFormattedMessage[256];
VFormat(sFormattedMessage, sizeof(sFormattedMessage), sMessage, 3);
switch (m_iLogType) {
case TDLogType_File: {
switch (iLogLevel) {
case TDLogLevel_Error: {
LogError("[TF2TD > Error] %s", sFormattedMessage);
}
case TDLogLevel_Warning: {
LogError("[TF2TD > Warning] %s", sFormattedMessage);
}
case TDLogLevel_Info: {
LogMessage("[TF2TD > Info] %s", sFormattedMessage);
}
case TDLogLevel_Debug: {
LogMessage("[TF2TD > Debug] %s", sFormattedMessage);
}
case TDLogLevel_Trace: {
LogMessage("[TF2TD > Trace] %s", sFormattedMessage);
}
}
}
case TDLogType_Console: {
switch (iLogLevel) {
case TDLogLevel_Error: {
PrintToServer("[TF2TD > Error] %s", sFormattedMessage);
}
case TDLogLevel_Warning: {
PrintToServer("[TF2TD > Warning] %s", sFormattedMessage);
}
case TDLogLevel_Info: {
PrintToServer("[TF2TD > Info] %s", sFormattedMessage);
}
case TDLogLevel_Debug: {
PrintToServer("[TF2TD > Debug] %s", sFormattedMessage);
}
case TDLogLevel_Trace: {
PrintToServer("[TF2TD > Trace] %s", sFormattedMessage);
}
}
}
case TDLogType_FileAndConsole: {
switch (iLogLevel) {
case TDLogLevel_Error: {
LogError("[TF2TD > Error] %s", sFormattedMessage);
PrintToServer("[TF2TD > Error] %s", sFormattedMessage);
}
case TDLogLevel_Warning: {
LogError("[TF2TD > Warning] %s", sFormattedMessage);
PrintToServer("[TF2TD > Warning] %s", sFormattedMessage);
}
case TDLogLevel_Info: {
LogMessage("[TF2TD > Info] %s", sFormattedMessage);
PrintToServer("[TF2TD > Info] %s", sFormattedMessage);
}
case TDLogLevel_Debug: {
LogMessage("[TF2TD > Debug] %s", sFormattedMessage);
PrintToServer("[TF2TD > Debug] %s", sFormattedMessage);
}
case TDLogLevel_Trace: {
LogMessage("[TF2TD > Trace] %s", sFormattedMessage);
PrintToServer("[TF2TD > Trace] %s", sFormattedMessage);
}
}
}
}
}
}
stock void LogType(TDLogLevel iLogLevel, TDLogType iLogType, const char[] sMessage, any...) {
if (m_iLogLevel >= iLogLevel) {
char sFormattedMessage[256];
VFormat(sFormattedMessage, sizeof(sFormattedMessage), sMessage, 4);
switch (iLogType) {
case TDLogType_File: {
switch (iLogLevel) {
case TDLogLevel_Error: {
LogError("[TF2TD > Error] %s", sFormattedMessage);
}
case TDLogLevel_Warning: {
LogError("[TF2TD > Warning] %s", sFormattedMessage);
}
case TDLogLevel_Info: {
LogMessage("[TF2TD > Info] %s", sFormattedMessage);
}
case TDLogLevel_Debug: {
LogMessage("[TF2TD > Debug] %s", sFormattedMessage);
}
case TDLogLevel_Trace: {
LogMessage("[TF2TD > Trace] %s", sFormattedMessage);
}
}
}
case TDLogType_Console: {
switch (iLogLevel) {
case TDLogLevel_Error: {
PrintToServer("[TF2TD > Error] %s", sFormattedMessage);
}
case TDLogLevel_Warning: {
PrintToServer("[TF2TD > Warning] %s", sFormattedMessage);
}
case TDLogLevel_Info: {
PrintToServer("[TF2TD > Info] %s", sFormattedMessage);
}
case TDLogLevel_Debug: {
PrintToServer("[TF2TD > Debug] %s", sFormattedMessage);
}
case TDLogLevel_Trace: {
PrintToServer("[TF2TD > Trace] %s", sFormattedMessage);
}
}
}
case TDLogType_FileAndConsole: {
switch (iLogLevel) {
case TDLogLevel_Error: {
LogError("[TF2TD > Error] %s", sFormattedMessage);
PrintToServer("[TF2TD > Error] %s", sFormattedMessage);
}
case TDLogLevel_Warning: {
LogError("[TF2TD > Warning] %s", sFormattedMessage);
PrintToServer("[TF2TD > Warning] %s", sFormattedMessage);
}
case TDLogLevel_Info: {
LogMessage("[TF2TD > Info] %s", sFormattedMessage);
PrintToServer("[TF2TD > Info] %s", sFormattedMessage);
}
case TDLogLevel_Debug: {
LogMessage("[TF2TD > Debug] %s", sFormattedMessage);
PrintToServer("[TF2TD > Debug] %s", sFormattedMessage);
}
case TDLogLevel_Trace: {
LogMessage("[TF2TD > Trace] %s", sFormattedMessage);
PrintToServer("[TF2TD > Trace] %s", sFormattedMessage);
}
}
}
}
}
}