core/Logger.cpp
changeset 1378 115ba755bcdf
parent 1371 d207f0e17532
child 1444 be6848920a62
     1.1 --- a/core/Logger.cpp	Sun Aug 26 20:12:30 2007 +0000
     1.2 +++ b/core/Logger.cpp	Mon Aug 27 02:00:37 2007 +0000
     1.3 @@ -228,6 +228,39 @@
     1.4  	_CloseFile();
     1.5  }
     1.6  
     1.7 +void Logger::LogToOpenFile(FILE *fp, const char *msg, ...)
     1.8 +{
     1.9 +	if (!m_Active)
    1.10 +	{
    1.11 +		return;
    1.12 +	}
    1.13 +
    1.14 +	va_list ap;
    1.15 +	va_start(ap, msg);
    1.16 +	LogToOpenFileEx(fp, msg, ap);
    1.17 +	va_end(ap);
    1.18 +}
    1.19 +
    1.20 +void Logger::LogToOpenFileEx(FILE *fp, const char *msg, va_list ap)
    1.21 +{
    1.22 +	if (!m_Active)
    1.23 +	{
    1.24 +		return;
    1.25 +	}
    1.26 +
    1.27 +	char buffer[3072];
    1.28 +	UTIL_FormatArgs(buffer, sizeof(buffer), msg, ap);
    1.29 +
    1.30 +	char date[32];
    1.31 +	time_t t;
    1.32 +	GetAdjustedTime(&t);
    1.33 +	tm *curtime = localtime(&t);
    1.34 +	strftime(date, sizeof(date), "%m/%d/%Y - %H:%M:%S", curtime);
    1.35 +
    1.36 +	fprintf(fp, "L %s: %s\n", date, buffer);
    1.37 +	g_SMAPI->ConPrintf("L %s: %s\n", date, buffer);
    1.38 +}
    1.39 +
    1.40  void Logger::LogMessage(const char *vafmt, ...)
    1.41  {
    1.42  	if (!m_Active)
    1.43 @@ -250,17 +283,9 @@
    1.44  		_NewMapFile();
    1.45  	}
    1.46  
    1.47 -	char msg[3072];
    1.48 -	va_list ap;
    1.49 -	va_start(ap, vafmt);
    1.50 -	vsnprintf(msg, sizeof(msg), vafmt, ap);
    1.51 -	va_end(ap);
    1.52 -
    1.53 -	char date[32];
    1.54  	time_t t;
    1.55  	GetAdjustedTime(&t);
    1.56  	tm *curtime = localtime(&t);
    1.57 -	strftime(date, sizeof(date), "%m/%d/%Y - %H:%M:%S", curtime);
    1.58  
    1.59  	FILE *fp = NULL;
    1.60  	if (m_Mode == LoggingMode_PerMap)
    1.61 @@ -291,16 +316,20 @@
    1.62  	{
    1.63  		if (m_DailyPrintHdr)
    1.64  		{
    1.65 +			char date[32];
    1.66  			m_DailyPrintHdr = false;
    1.67 +			strftime(date, sizeof(date), "%m/%d/%Y - %H:%M:%S", curtime);
    1.68  			fprintf(fp, "L %s: SourceMod log file session started (file \"L%04d%02d%02d.log\") (Version \"%s\")\n", date, curtime->tm_year + 1900, curtime->tm_mon + 1, curtime->tm_mday, SVN_FULL_VERSION);
    1.69  	 	}
    1.70 -		fprintf(fp, "L %s: %s\n", date, msg);
    1.71 +		va_list ap;
    1.72 +		va_start(ap, vafmt);
    1.73 +		LogToOpenFileEx(fp, vafmt, ap);
    1.74 +		va_end(ap);
    1.75  		fclose(fp);
    1.76  	} else {
    1.77  		goto print_error;
    1.78  	}
    1.79  
    1.80 -	g_SMAPI->ConPrintf("L %s: %s\n", date, msg);
    1.81  	return;
    1.82  print_error:
    1.83  	g_SMAPI->ConPrint("[SM] Unexpected fatal logging error. SourceMod logging disabled.\n");
    1.84 @@ -318,9 +347,6 @@
    1.85  	GetAdjustedTime(&t);
    1.86  	tm *curtime = localtime(&t);
    1.87  
    1.88 -	char date[32];
    1.89 -	strftime(date, sizeof(date), "%m/%d/%Y - %H:%M:%S", curtime);
    1.90 -
    1.91  	if (curtime->tm_mday != m_CurDay)
    1.92  	{
    1.93  		char _filename[256];
    1.94 @@ -330,30 +356,27 @@
    1.95  		m_ErrMapStart = false;
    1.96  	}
    1.97  
    1.98 -	char msg[3072];
    1.99 -	va_list ap;
   1.100 -	va_start(ap, vafmt);
   1.101 -	vsnprintf(msg, sizeof(msg), vafmt, ap);
   1.102 -	va_end(ap);
   1.103 -
   1.104  	FILE *fp = fopen(m_ErrFileName.c_str(), "a+");
   1.105  	if (fp)
   1.106  	{
   1.107  		if (!m_ErrMapStart)
   1.108  		{
   1.109 +			char date[32];
   1.110 +			strftime(date, sizeof(date), "%m/%d/%Y - %H:%M:%S", curtime);
   1.111  			fprintf(fp, "L %s: SourceMod error session started\n", date);
   1.112  			fprintf(fp, "L %s: Info (map \"%s\") (file \"errors_%04d%02d%02d.log\")\n", date, m_CurMapName.c_str(), curtime->tm_year + 1900, curtime->tm_mon + 1, curtime->tm_mday);
   1.113  			m_ErrMapStart = true;
   1.114  		}
   1.115 -		fprintf(fp, "L %s: %s\n", date, msg);
   1.116 +		va_list ap;
   1.117 +		va_start(ap, vafmt);
   1.118 +		LogToOpenFileEx(fp, vafmt, ap);
   1.119 +		va_end(ap);
   1.120  		fclose(fp);
   1.121  	} else {
   1.122  		g_SMAPI->ConPrint("[SM] Unexpected fatal logging error. SourceMod logging disabled.\n");
   1.123  		m_Active = false;
   1.124  		return;
   1.125  	}
   1.126 -
   1.127 -	g_SMAPI->ConPrintf("L %s: %s\n", date, msg);
   1.128  }
   1.129  
   1.130  void Logger::MapChange(const char *mapname)