Просмотр исходного кода

Fixes the Logger to not always create poly.log even if it does not log to a file, or logs to a correctly named file.

Joachim Meyer 11 лет назад
Родитель
Сommit
da94a4d34c
2 измененных файлов с 24 добавлено и 7 удалено
  1. 6 0
      Core/Contents/Include/PolyLogger.h
  2. 18 7
      Core/Contents/Source/PolyLogger.cpp

+ 6 - 0
Core/Contents/Include/PolyLogger.h

@@ -72,6 +72,12 @@ namespace Polycode {
 			*/
 			FILE *getLogFile();
 
+			/**
+			* Sets the file where the Logger should log to
+			* @param f A pointer to a opened FILE
+			*/
+			void setLogFile(FILE *f);
+
 			/**
 			* @return The logger instance
 			*/

+ 18 - 7
Core/Contents/Source/PolyLogger.cpp

@@ -46,7 +46,7 @@ LoggerEvent::~LoggerEvent() {
 
 Logger::Logger() : EventDispatcher() {
 	logToFile = false;
-	logFile = fopen("poly.log", "w");
+	//logFile = fopen("poly.log", "w");
 }
 
 Logger::~Logger() {
@@ -69,9 +69,19 @@ void Logger::log(const char *format, ...) {
 	va_end(args);
 	
 	if (Logger::getInstance()->getLogToFile()){
-		va_start(args, format);
-		vfprintf(Logger::getInstance()->getLogFile(), format, args);
-		va_end(args);
+		if (Logger::getInstance()->getLogFile()){
+			va_start(args, format);
+			vfprintf(Logger::getInstance()->getLogFile(), format, args);
+			va_end(args);
+		} else {
+			time_t t = time(NULL);
+			char mbstr[100];
+			if (strftime(mbstr, sizeof(mbstr), "%y_%m_%d.log", localtime(&t))) {
+				Logger::getInstance()->setLogFile(fopen((const char*)mbstr, "w"));
+			} else {
+				Logger::getInstance()->setLogFile(fopen("poly.log", "w"));
+			}
+		}
 	}
 
 #ifdef _MSC_VER
@@ -101,8 +111,6 @@ void Logger::setLogToFile(bool val){
 		time_t t = time(NULL);
 		char mbstr[100];
 		if (strftime(mbstr, sizeof(mbstr), "%y_%m_%d.log", localtime(&t))) {
-			//if (logFile)
-			//	fclose(logFile);
 			logFile = fopen((const char*)mbstr, "w");
 		} else {
 			logFile = fopen("poly.log", "w");
@@ -112,6 +120,10 @@ void Logger::setLogToFile(bool val){
 	logToFile = val;
 }
 
+void Logger::setLogFile(FILE *f){
+	logFile = f;
+}
+
 bool Logger::getLogToFile(){
 	return logToFile;
 }
@@ -126,6 +138,5 @@ Logger *Logger::getInstance(){
 	}
 
 	overrideInstance = new Logger;
-	//Logger::log("Creating new logger instance...\n");
 	return overrideInstance;
 }