Felix Kauselmann 0e9a3a6407 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).
2018-08-04 12:31:34 +02:00

153 lines
4.9 KiB
C++

/**
@file
@author Stefan Frings
*/
#include "static.h"
#include "startup.h"
//#include "dualfilelogger.h"
#include "httplistener.h"
#include "requestmapper.h"
#include "staticfilecontroller.h"
#include "yacreader_global.h"
#include <QDir>
#include <QCoreApplication>
/** Name of this application */
#define APPNAME "YACReaderLibrary"
/** Publisher of this application */
#define ORGANISATION "YACReader"
/** Short description of this application */
#define DESCRIPTION "Comic reader and organizer"
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");
//QSettings* debugLogSettings=new QSettings(configFileName,QSettings::IniFormat,app);
//debugLogSettings->beginGroup("debugLogFile");
if(mainLogSettings->value("fileName").isNull())
mainLogSettings->setValue("fileName", QFileInfo(YACReader::getSettingsPath(), "server_log.log").absoluteFilePath());
if(mainLogSettings->value("maxSize").isNull())
mainLogSettings->setValue("maxSize",1048576);
if(mainLogSettings->value("maxBackups").isNull())
mainLogSettings->setValue("maxBackups",1);
if(mainLogSettings->value("minLevel").isNull())
mainLogSettings->setValue("minLevel",QtCriticalMsg);
Logger* logger=new FileLogger(mainLogSettings,10000,app);
logger->installMsgHandler();*/
// Configure template loader and cache
QSettings* templateSettings=new QSettings(configFileName,QSettings::IniFormat,app);
templateSettings->beginGroup("templates");
if(templateSettings->value("cacheSize").isNull())
templateSettings->setValue("cacheSize","160000");
QString baseTemplatePath = QString("./server/templates");
QString templatePath;
#if defined Q_OS_UNIX && !defined Q_OS_MAC
templatePath=QFileInfo(QString(DATADIR)+"/yacreader",baseTemplatePath).absoluteFilePath();
#else
templatePath=QFileInfo(QCoreApplication::applicationDirPath(),baseTemplatePath).absoluteFilePath();
#endif
if(templateSettings->value("path").isNull())
templateSettings->setValue("path",templatePath);
Static::templateLoader=new TemplateCache(templateSettings,app);
// Configure session store
QSettings* sessionSettings=new QSettings(configFileName,QSettings::IniFormat,app);
sessionSettings->beginGroup("sessions");
if(sessionSettings->value("expirationTime").isNull())
sessionSettings->setValue("expirationTime",864000000);
Static::sessionStore=new HttpSessionStore(sessionSettings,app);
Static::yacreaderSessionStore = new YACReaderHttpSessionStore(Static::sessionStore, app);
// Configure static file controller
QSettings* fileSettings=new QSettings(configFileName,QSettings::IniFormat,app);
fileSettings->beginGroup("docroot");
QString basedocroot = "./server/docroot";
QString docroot;
#if defined Q_OS_UNIX && ! defined Q_OS_MAC
QFileInfo configFile(QString(DATADIR)+"/yacreader");
docroot=QFileInfo(QString(DATADIR)+"/yacreader",basedocroot).absoluteFilePath();
#else
QFileInfo configFile(QCoreApplication::applicationDirPath());
docroot=QFileInfo(QCoreApplication::applicationDirPath(),basedocroot).absoluteFilePath();
#endif
if(fileSettings->value("path").isNull())
fileSettings->setValue("path",docroot);
Static::staticFileController=new StaticFileController(fileSettings,app);
// Configure and start the TCP listener
qDebug("ServiceHelper: Starting service");
QSettings* listenerSettings=new QSettings(configFileName,QSettings::IniFormat,app);
listenerSettings->beginGroup("listener");
if(listenerSettings->value("maxRequestSize").isNull())
listenerSettings->setValue("maxRequestSize","32000000");
if(listenerSettings->value("maxMultiPartSize").isNull())
listenerSettings->setValue("maxMultiPartSize","32000000");
if(listenerSettings->value("cleanupInterval").isNull())
listenerSettings->setValue("cleanupInterval",10000);
if(listenerSettings->value("minThreads").isNull())
listenerSettings->setValue("maxThreads",1000);
if(listenerSettings->value("minThreads").isNull())
listenerSettings->setValue("minThreads",50);
listener = new HttpListener(listenerSettings,new RequestMapper(app),app);
qDebug("ServiceHelper: Service has started");
}
void Startup::stop() {
qDebug("ServiceHelper: Service has been stopped");
// QCoreApplication destroys all objects that have been created in start().
if(listener!=nullptr)
{
listener->close();
delete listener;
listener = nullptr;
}
}
Startup::Startup()
{
}
QString Startup::getPort()
{
return QString("%1").arg(listener->serverPort());
}