mirror of
https://github.com/alliedmodders/sourcemod.git
synced 2025-12-06 18:08:36 +00:00
Log Time Format Config
This commit is contained in:
parent
0ccf21ecb6
commit
cfff550f1d
@ -21,6 +21,15 @@
|
||||
*/
|
||||
"LogMode" "daily"
|
||||
|
||||
/**
|
||||
* This option determines the time format SourceMod logging should use.
|
||||
*
|
||||
* "default" - Uses SourceMod's default time format. (%m/%d/%Y - %H:%M:%S)
|
||||
* You can specify any time format you want. See https://cplusplus.com/reference/ctime/strftime/ for a list of format parameters.
|
||||
* Example: "%d/%m/%Y - %H:%M:%S"
|
||||
*/
|
||||
"LogTimeFormat" "default"
|
||||
|
||||
/**
|
||||
* Language that multilingual enabled plugins and extensions will use to print messages.
|
||||
* Only languages listed in languages.cfg are valid.
|
||||
|
||||
@ -29,6 +29,7 @@
|
||||
* Version: $Id$
|
||||
*/
|
||||
|
||||
#include <string_view>
|
||||
#include <time.h>
|
||||
#include <cstdarg>
|
||||
#include "Logger.h"
|
||||
@ -83,6 +84,20 @@ ConfigResult Logger::OnSourceModConfigChanged(const char *key,
|
||||
|
||||
return ConfigResult_Accept;
|
||||
}
|
||||
else if (strcasecmp(key, "LogTimeFormat") == 0) {
|
||||
if (strcasecmp(value, "default") == 0)
|
||||
{
|
||||
m_isUsingDefaultTimeFormat = true;
|
||||
m_UserTimeFormat.clear();
|
||||
}
|
||||
else {
|
||||
// value is the time format string
|
||||
m_isUsingDefaultTimeFormat = false;
|
||||
m_UserTimeFormat.assign(value);
|
||||
}
|
||||
|
||||
return ConfigResult_Accept;
|
||||
}
|
||||
|
||||
return ConfigResult_Ignore;
|
||||
}
|
||||
@ -152,11 +167,7 @@ void Logger::LogToOpenFileEx(FILE *fp, const char *msg, va_list ap)
|
||||
char buffer[3072];
|
||||
ke::SafeVsprintf(buffer, sizeof(buffer), msg, ap);
|
||||
|
||||
char date[32];
|
||||
time_t t = g_pSM->GetAdjustedTime();
|
||||
tm *curtime = localtime(&t);
|
||||
strftime(date, sizeof(date), "%m/%d/%Y - %H:%M:%S", curtime);
|
||||
|
||||
const char* date = GetFormattedDate();
|
||||
fprintf(fp, "L %s: %s\n", date, buffer);
|
||||
|
||||
if (!sv_logecho || bridge->GetCvarBool(sv_logecho))
|
||||
@ -174,10 +185,7 @@ void Logger::LogToFileOnlyEx(FILE *fp, const char *msg, va_list ap)
|
||||
char buffer[3072];
|
||||
ke::SafeVsprintf(buffer, sizeof(buffer), msg, ap);
|
||||
|
||||
char date[32];
|
||||
time_t t = g_pSM->GetAdjustedTime();
|
||||
tm *curtime = localtime(&t);
|
||||
strftime(date, sizeof(date), "%m/%d/%Y - %H:%M:%S", curtime);
|
||||
const char* date = GetFormattedDate();
|
||||
fprintf(fp, "L %s: %s\n", date, buffer);
|
||||
|
||||
fflush(fp);
|
||||
@ -378,11 +386,7 @@ FILE *Logger::_OpenNormal()
|
||||
|
||||
if (!m_DamagedNormalFile)
|
||||
{
|
||||
time_t t = g_pSM->GetAdjustedTime();
|
||||
tm *curtime = localtime(&t);
|
||||
char date[32];
|
||||
|
||||
strftime(date, sizeof(date), "%m/%d/%Y - %H:%M:%S", curtime);
|
||||
const char* date = GetFormattedDate();
|
||||
fprintf(pFile, "L %s: SourceMod log file session started (file \"%s\") (Version \"%s\")\n", date, m_NormalFileName.c_str(), SOURCEMOD_VERSION);
|
||||
m_DamagedNormalFile = true;
|
||||
}
|
||||
@ -403,11 +407,7 @@ FILE *Logger::_OpenError()
|
||||
|
||||
if (!m_DamagedErrorFile)
|
||||
{
|
||||
time_t t = g_pSM->GetAdjustedTime();
|
||||
tm *curtime = localtime(&t);
|
||||
|
||||
char date[32];
|
||||
strftime(date, sizeof(date), "%m/%d/%Y - %H:%M:%S", curtime);
|
||||
const char* date = GetFormattedDate();
|
||||
fprintf(pFile, "L %s: SourceMod error session started\n", date);
|
||||
fprintf(pFile, "L %s: Info (map \"%s\") (file \"%s\")\n", date, m_CurrentMapName.c_str(), m_ErrorFileName.c_str());
|
||||
m_DamagedErrorFile = true;
|
||||
@ -452,3 +452,23 @@ void Logger::_CloseError()
|
||||
void Logger::_CloseFatal()
|
||||
{
|
||||
}
|
||||
|
||||
const char* Logger::GetFormattedDate() const
|
||||
{
|
||||
static char date[256];
|
||||
constexpr std::string_view DEFAULT_TIME_FORMAT{ "%m/%d/%Y - %H:%M:%S" };
|
||||
|
||||
time_t t = g_pSM->GetAdjustedTime();
|
||||
tm *curtime = localtime(&t);
|
||||
|
||||
if (m_isUsingDefaultTimeFormat)
|
||||
{
|
||||
strftime(date, sizeof(date), DEFAULT_TIME_FORMAT.data(), curtime);
|
||||
}
|
||||
else
|
||||
{
|
||||
strftime(date, sizeof(date), m_UserTimeFormat.c_str(), curtime);
|
||||
}
|
||||
|
||||
return date;
|
||||
}
|
||||
@ -53,7 +53,7 @@ enum LoggingMode
|
||||
class Logger : public SMGlobalClass, public ILogger
|
||||
{
|
||||
public:
|
||||
Logger() : m_Day(-1), m_Mode(LoggingMode_Daily), m_Active(true), m_DamagedNormalFile(false), m_DamagedErrorFile(false)
|
||||
Logger() : m_Day(-1), m_Mode(LoggingMode_Daily), m_Active(true), m_DamagedNormalFile(false), m_DamagedErrorFile(false), m_isUsingDefaultTimeFormat(true)
|
||||
{
|
||||
}
|
||||
public: //SMGlobalClass
|
||||
@ -95,10 +95,12 @@ private:
|
||||
void _LogFatalOpen(std::string &str);
|
||||
void _PrintToGameLog(const char *fmt, va_list ap);
|
||||
void _UpdateFiles(bool bLevelChange = false);
|
||||
const char* GetFormattedDate() const;
|
||||
private:
|
||||
std::string m_NormalFileName;
|
||||
std::string m_ErrorFileName;
|
||||
std::string m_CurrentMapName;
|
||||
std::string m_UserTimeFormat;
|
||||
|
||||
int m_Day;
|
||||
|
||||
@ -106,6 +108,7 @@ private:
|
||||
bool m_Active;
|
||||
bool m_DamagedNormalFile;
|
||||
bool m_DamagedErrorFile;
|
||||
bool m_isUsingDefaultTimeFormat;
|
||||
};
|
||||
|
||||
extern Logger g_Logger;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user