diff options
author | Yohann Ferreira <bertram@cegetel.net> | 2005-03-23 20:02:37 +0000 |
---|---|---|
committer | Yohann Ferreira <bertram@cegetel.net> | 2005-03-23 20:02:37 +0000 |
commit | 255da423d061e6f0ee3db009a7ed2c1ec8e60315 (patch) | |
tree | e46230d0ae8a4f61eb35d6bd13e2c5ec0b3bc692 /src/log.cpp | |
parent | 58ffdbff028f763451f471639c6aecc530ca4d94 (diff) | |
download | mana-255da423d061e6f0ee3db009a7ed2c1ec8e60315.tar.gz mana-255da423d061e6f0ee3db009a7ed2c1ec8e60315.tar.bz2 mana-255da423d061e6f0ee3db009a7ed2c1ec8e60315.tar.xz mana-255da423d061e6f0ee3db009a7ed2c1ec8e60315.zip |
New log class implementation Part 1/2
Diffstat (limited to 'src/log.cpp')
-rw-r--r-- | src/log.cpp | 92 |
1 files changed, 90 insertions, 2 deletions
diff --git a/src/log.cpp b/src/log.cpp index e2f0ac36..da6d8fb2 100644 --- a/src/log.cpp +++ b/src/log.cpp @@ -26,12 +26,100 @@ FILE* logfile; -#define LOG_FILE "tmw.log" +Logger::Logger(std::string logFilename) +{ + logFile.open("tmw.log"); + if ( !logFile.is_open() ) + { + std::cout << "Warning: error while opening log file." << std::endl; + } + +} + +Logger::~Logger() +{ + logFile.close(); +} + +void Logger::log(std::string log_text) +{ + if ( logFile.is_open() ) + { + // Time container + time_t t; + // Get the current system time + time(&t); + + // Print the log entry + std::string dateString = "["; + dateString += ((((t / 60) / 60) % 24 < 10) ? "0" : ""); + dateString += (((t / 60) / 60) % 24); + dateString += ":"; + dateString += (((t / 60) % 60 < 10) ? "0" : ""); + dateString += ((t / 60) % 60); + dateString += ":"; + dateString += ((t % 60 < 10) ? "0" : ""); + dateString += (t % 60); + dateString += "] "; + + // Print the log entry + logFile << dateString << log_text << std::endl; + } +} + +void Logger::log(const char *log_text, ...) +{ + if ( logFile.is_open() ) + { + char* buf = new char[1024]; + va_list ap; + time_t t; + + // Use a temporary buffer to fill in the variables + va_start(ap, log_text); + vsprintf(buf, log_text, ap); + va_end(ap); + + // Get the current system time + time(&t); + + // Print the log entry + std::string dateString = "["; + dateString += ((((t / 60) / 60) % 24 < 10) ? "0" : ""); + dateString += (((t / 60) / 60) % 24); + dateString += ":"; + dateString += (((t / 60) % 60 < 10) ? "0" : ""); + dateString += ((t / 60) % 60); + dateString += ":"; + dateString += ((t % 60 < 10) ? "0" : ""); + dateString += (t % 60); + dateString += "] "; + dateString += buf; + + logFile << dateString << std::endl; + + // Delete temporary buffer + delete[] buf; + } +} + +void Logger::error(const std::string &error_text) +{ + log(error_text); + +#ifdef WIN32 + MessageBox(NULL, error_text.c_str(), "Error", MB_ICONERROR | MB_OK); +#else + log("Error :"); + log(error_text); +#endif + exit(1); +} void init_log() { - logfile = fopen(LOG_FILE, "w"); + logfile = fopen("tmw.log", "w"); if (!logfile) { printf("Warning: error while opening log file.\n"); } |