Skip to content

Commit da94a4d

Browse files
author
Joachim Meyer
committed
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.
1 parent da80d4e commit da94a4d

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

Core/Contents/Include/PolyLogger.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,12 @@ namespace Polycode {
7272
*/
7373
FILE *getLogFile();
7474

75+
/**
76+
* Sets the file where the Logger should log to
77+
* @param f A pointer to a opened FILE
78+
*/
79+
void setLogFile(FILE *f);
80+
7581
/**
7682
* @return The logger instance
7783
*/

Core/Contents/Source/PolyLogger.cpp

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ LoggerEvent::~LoggerEvent() {
4646

4747
Logger::Logger() : EventDispatcher() {
4848
logToFile = false;
49-
logFile = fopen("poly.log", "w");
49+
//logFile = fopen("poly.log", "w");
5050
}
5151

5252
Logger::~Logger() {
@@ -69,9 +69,19 @@ void Logger::log(const char *format, ...) {
6969
va_end(args);
7070

7171
if (Logger::getInstance()->getLogToFile()){
72-
va_start(args, format);
73-
vfprintf(Logger::getInstance()->getLogFile(), format, args);
74-
va_end(args);
72+
if (Logger::getInstance()->getLogFile()){
73+
va_start(args, format);
74+
vfprintf(Logger::getInstance()->getLogFile(), format, args);
75+
va_end(args);
76+
} else {
77+
time_t t = time(NULL);
78+
char mbstr[100];
79+
if (strftime(mbstr, sizeof(mbstr), "%y_%m_%d.log", localtime(&t))) {
80+
Logger::getInstance()->setLogFile(fopen((const char*)mbstr, "w"));
81+
} else {
82+
Logger::getInstance()->setLogFile(fopen("poly.log", "w"));
83+
}
84+
}
7585
}
7686

7787
#ifdef _MSC_VER
@@ -101,8 +111,6 @@ void Logger::setLogToFile(bool val){
101111
time_t t = time(NULL);
102112
char mbstr[100];
103113
if (strftime(mbstr, sizeof(mbstr), "%y_%m_%d.log", localtime(&t))) {
104-
//if (logFile)
105-
// fclose(logFile);
106114
logFile = fopen((const char*)mbstr, "w");
107115
} else {
108116
logFile = fopen("poly.log", "w");
@@ -112,6 +120,10 @@ void Logger::setLogToFile(bool val){
112120
logToFile = val;
113121
}
114122

123+
void Logger::setLogFile(FILE *f){
124+
logFile = f;
125+
}
126+
115127
bool Logger::getLogToFile(){
116128
return logToFile;
117129
}
@@ -126,6 +138,5 @@ Logger *Logger::getInstance(){
126138
}
127139

128140
overrideInstance = new Logger;
129-
//Logger::log("Creating new logger instance...\n");
130141
return overrideInstance;
131142
}

0 commit comments

Comments
 (0)