From 46e9e73793f8545d1bf60089063a9f638fb7cf30 Mon Sep 17 00:00:00 2001 From: Michael Lemaire Date: Thu, 13 Aug 2015 00:33:16 +0200 Subject: [PATCH] Refactored logging system using iostream --- src/definition/Layers.cpp | 8 +-- .../modeler/quickapp/MainModelerWindow.cpp | 2 +- src/render/opengl/OpenGLRenderer.cpp | 4 +- src/render/opengl/OpenGLShaderProgram.cpp | 4 +- src/system/DataFile.cpp | 6 +-- src/system/Logs.cpp | 51 +++++++++++++++++++ src/system/Logs.h | 24 +++++++-- src/system/system_global.h | 1 + src/tests/main.cpp | 2 + 9 files changed, 87 insertions(+), 15 deletions(-) diff --git a/src/definition/Layers.cpp b/src/definition/Layers.cpp index 127e9f7..a509335 100644 --- a/src/definition/Layers.cpp +++ b/src/definition/Layers.cpp @@ -61,7 +61,7 @@ DefinitionNode* Layers::getLayer(int position) const } else { - logWarning("Asked for a undefined layer %d on a total of %d", position, (int)layers.size()); + Logs::warning() << "Asked for a undefined layer " << position << " on a total of " << (int)layers.size() << std::endl; return null_layer; } } @@ -77,7 +77,7 @@ int Layers::findLayer(DefinitionNode* layer) const } i++; } - logWarning("Layer %p (%s) not found, on a total of %d", layer, layer->getName().c_str(), (int)layers.size()); + Logs::warning() << "Layer " << layer << " (" << layer->getName() << " not found, on a total of " << (int)layers.size() << std::endl; return -1; } @@ -91,7 +91,7 @@ int Layers::addLayer(DefinitionNode* layer) } else { - logWarning("Add layer ignored because limit of %d reached", max_layer_count); + Logs::warning() << "Add layer ignored because limit of " << max_layer_count << " reached" << std::endl; delete layer; return -1; } @@ -113,7 +113,7 @@ void Layers::removeLayer(int position) } else { - logWarning("Removing unknown layer %d on %d from '%s'", position, (int)layers.size(), getName().c_str()); + Logs::warning() << "Removing unknown layer " << position << " on " << (int)layers.size() << " from '" << getName() << "'" << std::endl; } } diff --git a/src/interface/modeler/quickapp/MainModelerWindow.cpp b/src/interface/modeler/quickapp/MainModelerWindow.cpp index 4013b81..947a9d8 100644 --- a/src/interface/modeler/quickapp/MainModelerWindow.cpp +++ b/src/interface/modeler/quickapp/MainModelerWindow.cpp @@ -19,7 +19,7 @@ MainModelerWindow::MainModelerWindow() scenery = new Scenery(); scenery->autoPreset(); - logDebug("Initialized scenery:\n%s", QString::fromStdString(scenery->toString()).toLatin1().data()); + Logs::debug() << "Initialized scenery:\n" << scenery->toString() << std::endl; renderer = new OpenGLRenderer(scenery); diff --git a/src/render/opengl/OpenGLRenderer.cpp b/src/render/opengl/OpenGLRenderer.cpp index 00a80bb..23b7c08 100644 --- a/src/render/opengl/OpenGLRenderer.cpp +++ b/src/render/opengl/OpenGLRenderer.cpp @@ -72,7 +72,7 @@ void OpenGLRenderer::initialize() } else { - logError("Failed to initialize OpenGL bindings"); + Logs::error() << "Failed to initialize OpenGL bindings" << std::endl; } } @@ -140,7 +140,7 @@ void OpenGLRenderer::paint() int error_code; while ((error_code = glGetError()) != GL_NO_ERROR) { - logWarning("[OpenGL] ERROR : %s", (const char*)gluErrorString(error_code)); + Logs::warning() << "[OpenGL] ERROR : " << (const char*)gluErrorString(error_code) << std::endl; } } } diff --git a/src/render/opengl/OpenGLShaderProgram.cpp b/src/render/opengl/OpenGLShaderProgram.cpp index 1b07d7d..a445207 100644 --- a/src/render/opengl/OpenGLShaderProgram.cpp +++ b/src/render/opengl/OpenGLShaderProgram.cpp @@ -33,7 +33,7 @@ void OpenGLShaderProgram::addVertexSource(QString path) } else { - logError() << "Can't open vertex file " << file.fileName(); + Logs::error() << "Can't open vertex file " << file.fileName().toStdString() << std::endl; } } @@ -46,7 +46,7 @@ void OpenGLShaderProgram::addFragmentSource(QString path) } else { - logError() << "Can't open fragment file " << file.fileName(); + Logs::error() << "Can't open fragment file " << file.fileName().toStdString() << std::endl; } } diff --git a/src/system/DataFile.cpp b/src/system/DataFile.cpp index b748c96..29d61f5 100644 --- a/src/system/DataFile.cpp +++ b/src/system/DataFile.cpp @@ -23,7 +23,7 @@ std::string DataFile::findDir(const std::string &relpath) bool DataFile::tryDataDir(const QDir &dir) { - logDebug("[System] Try data dir %s", dir.absolutePath().toLocal8Bit().data()); + Logs::debug() << "[System] Try data dir " << dir.absolutePath().toStdString() << std::endl; return dir.exists("data/.paysages_data"); } @@ -58,13 +58,13 @@ std::string DataFile::initDataDir() std::string parent = locateDataDir(); if (parent.empty()) { - logWarning("[System] Data files not found"); + Logs::warning() << "[System] Data files not found" << std::endl; return parent; } else { std::string result = QDir(QString::fromStdString(parent)).absoluteFilePath("data").toStdString(); - logDebug("[System] Data files found : %s", result.c_str()); + Logs::debug() << "[System] Data files found : " << result << std::endl; return result; } } diff --git a/src/system/Logs.cpp b/src/system/Logs.cpp index eca5c5c..8da1973 100644 --- a/src/system/Logs.cpp +++ b/src/system/Logs.cpp @@ -1 +1,52 @@ #include "Logs.h" + +static std::ostream NULL_STREAM(0); +static bool enabled = true; + +std::ostream &Logs::debug() +{ +#ifdef NDEBUG + return NULL_STREAM; +#else + if (enabled) + { + std::cout << "DEBUG - "; + return std::cout; + } + else + { + return NULL_STREAM; + } +#endif +} + +std::ostream &Logs::warning() +{ + if (enabled) + { + std::cerr << "WARN - "; + return std::cerr; + } + else + { + return NULL_STREAM; + } +} + +std::ostream &Logs::error() +{ + if (enabled) + { + std::cerr << "ERROR - "; + return std::cerr; + } + else + { + return NULL_STREAM; + } +} + +void Logs::disable() +{ + enabled = false; +} diff --git a/src/system/Logs.h b/src/system/Logs.h index f952299..3c5efd0 100644 --- a/src/system/Logs.h +++ b/src/system/Logs.h @@ -3,8 +3,26 @@ #include "system_global.h" -#define logDebug qDebug -#define logWarning qWarning -#define logError qCritical +#include + +namespace paysages { +namespace system { + +/** + * Logger streams + */ +class Logs +{ +public: + static std::ostream &debug(); + static std::ostream &warning(); + static std::ostream &error(); + + // Disable all logs from now on + static void disable(); +}; + +} +} #endif // LOGS_H diff --git a/src/system/system_global.h b/src/system/system_global.h index 769b128..97ef135 100644 --- a/src/system/system_global.h +++ b/src/system/system_global.h @@ -14,6 +14,7 @@ namespace paysages { namespace system { + class Logs; class PackStream; class ParallelWork; class ParallelPool; diff --git a/src/tests/main.cpp b/src/tests/main.cpp index 28d9715..d4e6e7f 100644 --- a/src/tests/main.cpp +++ b/src/tests/main.cpp @@ -1,6 +1,7 @@ #include "BaseTestCase.h" #include +#include "Logs.h" void noMessageOutput(QtMsgType, const QMessageLogContext&, const QString&) { @@ -11,6 +12,7 @@ int main(int argc, char **argv) int result; qInstallMessageHandler(noMessageOutput); + Logs::disable(); testing::InitGoogleTest(&argc, argv); result = RUN_ALL_TESTS();