From afad6c7ab71f7b338e70547e4790a3b6607b354f Mon Sep 17 00:00:00 2001 From: Felix Kauselmann Date: Fri, 1 Jun 2018 23:31:48 +0200 Subject: [PATCH 1/3] Add parser option for setting loglevel to YACReaderLibrary and YACReaderLibraryServer --- YACReaderLibrary/main.cpp | 22 ++++++++++++++++++++++ YACReaderLibraryServer/main.cpp | 23 ++++++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/YACReaderLibrary/main.cpp b/YACReaderLibrary/main.cpp index f69d3aa0..fb0fc244 100644 --- a/YACReaderLibrary/main.cpp +++ b/YACReaderLibrary/main.cpp @@ -135,8 +135,30 @@ int main( int argc, char ** argv ) QCommandLineParser parser; parser.addHelpOption(); parser.addVersionOption(); +parser.addOption({"loglevel", "Set log level. Valid values: trace, info, debug, warn, error.", "loglevel", "warning"}); parser.process(app); +if (parser.isSet("loglevel")) { + if (parser.value("loglevel") == "trace") { + logger.setLoggingLevel(QsLogging::TraceLevel); + } + else if (parser.value("loglevel") == "info") { + logger.setLoggingLevel(QsLogging::InfoLevel); + } + else if (parser.value("loglevel") == "debug") { + logger.setLoggingLevel(QsLogging::DebugLevel); + } + else if (parser.value("loglevel") == "warn") { + logger.setLoggingLevel(QsLogging::WarnLevel); + } + else if (parser.value("loglevel") == "error") { + logger.setLoggingLevel(QsLogging::ErrorLevel); + } + else { + parser.showHelp(); + } +} + #ifdef SERVER_RELEASE QSettings * settings = new QSettings(YACReader::getSettingsPath()+"/YACReaderLibrary.ini",QSettings::IniFormat); //TODO unificar la creaci�n del fichero de config con el servidor settings->beginGroup("libraryConfig"); diff --git a/YACReaderLibraryServer/main.cpp b/YACReaderLibraryServer/main.cpp index 82a6be71..455024c6 100644 --- a/YACReaderLibraryServer/main.cpp +++ b/YACReaderLibraryServer/main.cpp @@ -70,6 +70,7 @@ int main( int argc, char ** argv ) parser.addHelpOption(); const QCommandLineOption versionOption = parser.addVersionOption(); parser.addPositionalArgument("command", "The command to execute. [start, create-library, update-library, add-library, remove-library, list-libraries]"); + parser.addOption({"loglevel", "Set log level. Valid values: trace, info, debug, warn, error.", "loglevel", "info"}); parser.parse(app.arguments()); const QStringList args = parser.positionalArguments(); @@ -92,7 +93,27 @@ int main( int argc, char ** argv ) QDir().mkpath(YACReader::getSettingsPath()); Logger& logger = Logger::instance(); - logger.setLoggingLevel(QsLogging::InfoLevel); + + if (parser.isSet("loglevel")) { + if (parser.value("loglevel") == "trace") { + logger.setLoggingLevel(QsLogging::TraceLevel); + } + else if (parser.value("loglevel") == "info") { + logger.setLoggingLevel(QsLogging::InfoLevel); + } + else if (parser.value("loglevel") == "debug") { + logger.setLoggingLevel(QsLogging::DebugLevel); + } + else if (parser.value("loglevel") == "warn") { + logger.setLoggingLevel(QsLogging::WarnLevel); + } + else if (parser.value("loglevel") == "error") { + logger.setLoggingLevel(QsLogging::ErrorLevel); + } + else { + parser.showHelp(); + } + } DestinationPtr fileDestination(DestinationFactory::MakeFileDestination( destLog, EnableLogRotation, MaxSizeBytes(1048576), MaxOldLogCount(2))); From 353052828266abd6d50376524b5acb546edda11d Mon Sep 17 00:00:00 2001 From: Felix Kauselmann Date: Sun, 3 Jun 2018 15:50:50 +0200 Subject: [PATCH 2/3] Add a commandline option to set YACReaderLibrary opengl renderer on windows. --- YACReaderLibrary/main.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/YACReaderLibrary/main.cpp b/YACReaderLibrary/main.cpp index fb0fc244..0bcbfc33 100644 --- a/YACReaderLibrary/main.cpp +++ b/YACReaderLibrary/main.cpp @@ -136,8 +136,32 @@ QCommandLineParser parser; parser.addHelpOption(); parser.addVersionOption(); parser.addOption({"loglevel", "Set log level. Valid values: trace, info, debug, warn, error.", "loglevel", "warning"}); +#ifdef Q_OS_WIN +parser.addOption({"opengl", "Set opengl renderer. Valid values: desktop, es, software.", "gl_renderer"}); +#endif parser.process(app); +#ifdef Q_OS_WIN +if (parser.isSet("opengl")) { + QTextStream qout(stdout); + if (parser.value("opengl") == "desktop") { + app.setAttribute(Qt::AA_UseDesktopOpenGL); + } + else if (parser.value("opengl") == "es") { + app.setAttribute(Qt::AA_UseOpenGLES); + } + else if (parser.value("opengl") == "software") { + qout << "Warning! This will be slow as hell. Only use this setting for" + "testing or as a last resort."; + app.setAttribute(Qt::AA_UseSoftwareOpenGL); + } + else { + qout << "Invalid value:" << parser.value("gl_renderer"); + parser.showHelp(); + } +} +#endif + if (parser.isSet("loglevel")) { if (parser.value("loglevel") == "trace") { logger.setLoggingLevel(QsLogging::TraceLevel); From 0e9a3a6407e1b712f1d3f53ad09d20fee4d1c4aa Mon Sep 17 00:00:00 2001 From: Felix Kauselmann Date: Sun, 3 Jun 2018 16:31:44 +0200 Subject: [PATCH 3/3] Stop QtWebApp from eating out debug messages QtWebapp installs a custom logger/message handler which reroutes all debug messages to it's custom logger class. As the default logging level for QtWebApp's logger is set to "critical" this means that all debug messages are sent to nirvana. Solution: Replace QtWebApp's messageHandler with our own (using QsLog). --- YACReaderLibrary/main.cpp | 39 ++++++++++++++++++++++++++++ YACReaderLibrary/server/server.pri | 2 +- YACReaderLibrary/server/startup.cpp | 8 +++--- YACReaderLibraryServer/main.cpp | 40 +++++++++++++++++++++++++++++ 4 files changed, 83 insertions(+), 6 deletions(-) diff --git a/YACReaderLibrary/main.cpp b/YACReaderLibrary/main.cpp index 0bcbfc33..aeb47e8d 100644 --- a/YACReaderLibrary/main.cpp +++ b/YACReaderLibrary/main.cpp @@ -80,8 +80,47 @@ void logSystemAndConfig() QLOG_INFO() << "--------------------------------------------"; } +void messageHandler(QtMsgType type, const QMessageLogContext& context, const QString& msg) +{ + Q_UNUSED(context); + + QByteArray localMsg = msg.toLocal8Bit(); + switch (type) + { + case QtInfoMsg: + { + QLOG_INFO() << localMsg.constData(); + break; + } + case QtDebugMsg: + { + QLOG_DEBUG() << localMsg.constData(); + break; + } + + case QtWarningMsg: + { + QLOG_WARN() << localMsg.constData(); + break; + } + + case QtCriticalMsg: + { + QLOG_ERROR() << localMsg.constData(); + break; + } + + case QtFatalMsg: + { + QLOG_FATAL() << localMsg.constData(); + break; + } + } +} + int main( int argc, char ** argv ) { + qInstallMessageHandler(messageHandler); QApplication app( argc, argv ); #ifdef FORCE_ANGLE diff --git a/YACReaderLibrary/server/server.pri b/YACReaderLibrary/server/server.pri index 6023cd66..40b1c62f 100644 --- a/YACReaderLibrary/server/server.pri +++ b/YACReaderLibrary/server/server.pri @@ -90,7 +90,7 @@ SOURCES += \ $$PWD/controllers/v2/taginfocontroller_v2.cpp -include(lib/logging/logging.pri) +#include(lib/logging/logging.pri) include(lib/httpserver/httpserver.pri) include(lib/templateengine/templateengine.pri) diff --git a/YACReaderLibrary/server/startup.cpp b/YACReaderLibrary/server/startup.cpp index 4bc819d8..7e59401a 100644 --- a/YACReaderLibrary/server/startup.cpp +++ b/YACReaderLibrary/server/startup.cpp @@ -5,7 +5,7 @@ #include "static.h" #include "startup.h" -#include "dualfilelogger.h" +//#include "dualfilelogger.h" #include "httplistener.h" #include "requestmapper.h" #include "staticfilecontroller.h" @@ -27,9 +27,9 @@ void Startup::start() { // Initialize the core application QCoreApplication* app = QCoreApplication::instance(); - QString configFileName=YACReader::getSettingsPath()+"/"+QCoreApplication::applicationName()+".ini"; +/* // Configure logging into files QSettings* mainLogSettings=new QSettings(configFileName,QSettings::IniFormat,app); mainLogSettings->beginGroup("mainLogFile"); @@ -49,7 +49,7 @@ void Startup::start() { mainLogSettings->setValue("minLevel",QtCriticalMsg); Logger* logger=new FileLogger(mainLogSettings,10000,app); - logger->installMsgHandler(); + logger->installMsgHandler();*/ // Configure template loader and cache QSettings* templateSettings=new QSettings(configFileName,QSettings::IniFormat,app); @@ -150,5 +150,3 @@ QString Startup::getPort() { return QString("%1").arg(listener->serverPort()); } - - diff --git a/YACReaderLibraryServer/main.cpp b/YACReaderLibraryServer/main.cpp index 455024c6..5252ef84 100644 --- a/YACReaderLibraryServer/main.cpp +++ b/YACReaderLibraryServer/main.cpp @@ -44,8 +44,48 @@ void logSystemAndConfig() QLOG_INFO() << "--------------------------------------------"; } +void messageHandler(QtMsgType type, const QMessageLogContext& context, const QString& msg) +{ + Q_UNUSED(context); + + QByteArray localMsg = msg.toLocal8Bit(); + switch (type) + { + case QtInfoMsg: + { + QLOG_INFO() << localMsg.constData(); + break; + } + case QtDebugMsg: + { + QLOG_DEBUG() << localMsg.constData(); + break; + } + + case QtWarningMsg: + { + QLOG_WARN() << localMsg.constData(); + break; + } + + case QtCriticalMsg: + { + QLOG_ERROR() << localMsg.constData(); + break; + } + + case QtFatalMsg: + { + QLOG_FATAL() << localMsg.constData(); + break; + } + } +} + int main( int argc, char ** argv ) { + qInstallMessageHandler(messageHandler); + QCoreApplication app(argc, argv); app.setApplicationName("YACReaderLibrary");