core/Logger.cpp
changeset 1444 be6848920a62
parent 1378 115ba755bcdf
child 1638 2980312c1c94
     1.1 --- a/core/Logger.cpp	Wed Sep 19 15:18:15 2007 +0000
     1.2 +++ b/core/Logger.cpp	Thu Sep 20 17:19:16 2007 +0000
     1.3 @@ -139,7 +139,11 @@
     1.4  	FILE *fp = fopen(m_NrmFileName.c_str(), "w");
     1.5  	if (!fp)
     1.6  	{
     1.7 -		g_SMAPI->ConPrint("[SM] Unexpected fatal logging error. SourceMod logging disabled.\n");
     1.8 +		char error[255];
     1.9 +		g_LibSys.GetPlatformError(error, sizeof(error));
    1.10 +		LogFatal("[SM] Unexpected fatal logging error (file \"%s\")", m_NrmFileName.c_str());
    1.11 +		LogFatal("[SM] Platform returned error: \"%s\"", error);
    1.12 +		LogFatal("[SM] Logging has been disabled.");
    1.13  		m_Active = false;
    1.14  		return;
    1.15  	} else {
    1.16 @@ -332,7 +336,11 @@
    1.17  
    1.18  	return;
    1.19  print_error:
    1.20 -	g_SMAPI->ConPrint("[SM] Unexpected fatal logging error. SourceMod logging disabled.\n");
    1.21 +	char error[255];
    1.22 +	g_LibSys.GetPlatformError(error, sizeof(error));
    1.23 +	LogFatal("[SM] Unexpected fatal logging error (file \"%s\")", m_NrmFileName.c_str());
    1.24 +	LogFatal("[SM] Platform returned error: \"%s\"", error);
    1.25 +	LogFatal("[SM] Logging has been disabled.");
    1.26  	m_Active = false;
    1.27  }
    1.28  
    1.29 @@ -373,7 +381,11 @@
    1.30  		va_end(ap);
    1.31  		fclose(fp);
    1.32  	} else {
    1.33 -		g_SMAPI->ConPrint("[SM] Unexpected fatal logging error. SourceMod logging disabled.\n");
    1.34 +		char error[255];
    1.35 +		g_LibSys.GetPlatformError(error, sizeof(error));
    1.36 +		LogFatal("[SM] Unexpected fatal logging error (file \"%s\")", m_NrmFileName.c_str());
    1.37 +		LogFatal("[SM] Platform returned error: \"%s\"", error);
    1.38 +		LogFatal("[SM] Logging has been disabled.");
    1.39  		m_Active = false;
    1.40  		return;
    1.41  	}
    1.42 @@ -474,21 +486,28 @@
    1.43  	 * It's already implemented twice which is bad.
    1.44  	 */
    1.45  
    1.46 +	va_list ap;
    1.47 +	char buffer[3072];
    1.48 +
    1.49 +	va_start(ap, msg);
    1.50 +	UTIL_FormatArgs(buffer, sizeof(buffer), msg, 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 +	g_SMAPI->ConPrintf("L %s: %s\n", date, buffer);
    1.60 +
    1.61  	char path[PLATFORM_MAX_PATH];
    1.62  	g_SourceMod.BuildPath(Path_Game, path, sizeof(path), "sourcemod_fatal.log");
    1.63  	FILE *fp = fopen(path, "at");
    1.64 -	if (!fp)
    1.65 +	if (fp)
    1.66  	{
    1.67 -		/* We're just doomed, aren't we... */
    1.68 -		return;
    1.69 +		fprintf(fp, "%s\n", buffer);
    1.70 +		fclose(fp);
    1.71  	}
    1.72 +}
    1.73  
    1.74 -	va_list ap;
    1.75 -	va_start(ap, msg);
    1.76 -	vfprintf(fp, msg, ap);
    1.77 -	va_end(ap);
    1.78 -
    1.79 -	fputs("\n", fp);
    1.80 -	
    1.81 -	fclose(fp);
    1.82 -}