فهرست منبع

Merge pull request #523 from fodinabor/LogToFile

Fixes the Logger to not always create poly.log even if it does not log t...
Ivan Safrin 11 سال پیش
والد
کامیت
5b2df603a8
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();
 			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
 			* @return The logger instance
 			*/
 			*/

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

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