Merge branch 'feat/logger' into 'master'

Feat/logger

See merge request spaceti-app/integrations/common/server-sdk!9
This commit is contained in:
Filip Bucek 2019-11-25 08:20:33 +00:00
commit 9fc60947eb
3 changed files with 46 additions and 14 deletions

View File

@ -3,16 +3,22 @@
#include <QLoggingCategory> #include <QLoggingCategory>
#include <QFileInfo> #include <QFileInfo>
#include <QDateTime>
Q_LOGGING_CATEGORY(sdkcore, "sdk.core"); Q_LOGGING_CATEGORY(sdkcore, "sdk.core");
Q_LOGGING_CATEGORY(sdknetwork, "sdk.network"); Q_LOGGING_CATEGORY(sdknetwork, "sdk.network");
Q_LOGGING_CATEGORY(sdkutils, "sdk.utils"); Q_LOGGING_CATEGORY(sdkutils, "sdk.utils");
Q_LOGGING_CATEGORY(sdkutilsdb, "sdk.utils.db");
Q_LOGGING_CATEGORY(sdkdb, "sdk.db"); Q_LOGGING_CATEGORY(sdkdb, "sdk.db");
namespace serversdk { namespace serversdk {
Logger* Logger::sConsumer = nullptr; Logger* Logger::sConsumer = nullptr;
//bool Logger::sShowFunction = false; #ifdef Q_OS_UNIX
bool Logger::mColorOutput = true;
#else
bool Logger::mColorOutput = false;
#endif
void Logger::setConsumer(Logger *consumer) void Logger::setConsumer(Logger *consumer)
@ -23,6 +29,7 @@ void Logger::setConsumer(Logger *consumer)
Logger::Logger(QObject *parent) : QObject(parent) Logger::Logger(QObject *parent) : QObject(parent)
{ {
qRegisterMetaType<LoggerMessage>(); qRegisterMetaType<LoggerMessage>();
} }
QList<LoggerMessage> Logger::getNewMessages(int currentCount) QList<LoggerMessage> Logger::getNewMessages(int currentCount)
@ -43,6 +50,16 @@ QList<LoggerMessage> Logger::getNewMessages(int currentCount)
return list; return list;
} }
QString Logger::toColor(const QString &color, const QString &text)
{
return color + text + "\033[0m";
}
void Logger::setColorOutput(bool colorOutput)
{
mColorOutput = colorOutput;
}
void Logger::outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg) void Logger::outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{ {
@ -50,23 +67,29 @@ void Logger::outputMessage(QtMsgType type, const QMessageLogContext &context, co
QString text; QString text;
QString textType; QString textType;
QString colorTextType;
switch (type) { switch (type) {
case QtDebugMsg: case QtDebugMsg:
textType = QStringLiteral("debug"); textType = QStringLiteral("DEBUG");
colorTextType = Logger::toColor("\033[0;31m", textType);
break; break;
case QtWarningMsg: case QtWarningMsg:
textType = QStringLiteral("warning"); textType = QStringLiteral("WARN");
colorTextType = Logger::toColor("\033[0;33m", textType);
break; break;
case QtCriticalMsg: case QtCriticalMsg:
textType = QStringLiteral("critical"); textType = QStringLiteral("CRITICAL");
colorTextType = Logger::toColor("\033[0;31m", textType);
break; break;
case QtFatalMsg: case QtFatalMsg:
textType = QStringLiteral("fatal"); textType = QStringLiteral("FATAL");
colorTextType = Logger::toColor("\033[0;31m", textType);
break; break;
#if QT_VERSION >= 0x050500 #if QT_VERSION >= 0x050500
case QtInfoMsg: case QtInfoMsg:
textType = QStringLiteral("info"); textType = QStringLiteral("INFO");
colorTextType = Logger::toColor("\033[0;34m", textType);
break; break;
#endif #endif
} }
@ -78,14 +101,19 @@ void Logger::outputMessage(QtMsgType type, const QMessageLogContext &context, co
// Output message // Output message
//text += QString("%1 %2:%3 %4").arg(context.category).arg(shortFile).arg(context.line).arg(msg); //text += QString("%1 %2:%3 %4").arg(context.category).arg(shortFile).arg(context.line).arg(msg);
// New output syntax // New output syntax
text = QStringLiteral("[%1] %2 [ %3:%4 | %5 | %6 ]")
.arg(textType, msg, shortFile) QDateTime now = QDateTime::currentDateTime();
.arg(context.line)
.arg(context.function, context.category); const QString textTypeUni = mColorOutput ? colorTextType : textType;
text = QStringLiteral("[%1 %2 %3] %4") // [ %3:%4 | %5 | %6 ]")
.arg(now.toString("dd-MM-yyyy hh:mm:ss.z"))
.arg(textTypeUni)
.arg(context.category)
.arg(msg);
QTextStream out(stderr); QTextStream out(stderr);
out << text << "\n"; //.toLocal8Bit() + "\n"; out << text << "\n"; //.toLocal8Bit() + "\n";
//out.flush(); // INVSDK-37 ORK-102 crash on windows when flush() -> possible threading problem
if (type == QtFatalMsg) if (type == QtFatalMsg)
abort(); abort();

View File

@ -11,6 +11,7 @@
Q_DECLARE_LOGGING_CATEGORY(sdkcore) Q_DECLARE_LOGGING_CATEGORY(sdkcore)
Q_DECLARE_LOGGING_CATEGORY(sdknetwork) Q_DECLARE_LOGGING_CATEGORY(sdknetwork)
Q_DECLARE_LOGGING_CATEGORY(sdkutils) Q_DECLARE_LOGGING_CATEGORY(sdkutils)
Q_DECLARE_LOGGING_CATEGORY(sdkutilsdb)
Q_DECLARE_LOGGING_CATEGORY(sdkdb) Q_DECLARE_LOGGING_CATEGORY(sdkdb)
namespace serversdk { namespace serversdk {
@ -94,6 +95,10 @@ public:
virtual void pushMessage(const LoggerMessage& logmsg); virtual void pushMessage(const LoggerMessage& logmsg);
QList<serversdk::LoggerMessage> getNewMessages(int currentCount); QList<serversdk::LoggerMessage> getNewMessages(int currentCount);
static QString toColor(const QString &color, const QString &text);
/** I will enable color output for terminal ( linux only ) */
void setColorOutput(bool colorOutput);
signals: signals:
void messageReceived(const serversdk::LoggerMessage &message); void messageReceived(const serversdk::LoggerMessage &message);
@ -101,6 +106,7 @@ signals:
private: private:
QList<LoggerMessage> mLogMessages; //!< Test QList<LoggerMessage> mLogMessages; //!< Test
QMutex mMutex; QMutex mMutex;
static bool mColorOutput;
}; };

View File

@ -3,15 +3,13 @@
#include <QCoreApplication> #include <QCoreApplication>
#include <QCommandLineParser> #include <QCommandLineParser>
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
serversdk::initAppLogger(); serversdk::initAppLogger();
qCDebug(sdkcore) << "test message"; qCDebug(sdkcore) << "Application starting";
QCoreApplication app(argc, argv); QCoreApplication app(argc, argv);
QCoreApplication::setApplicationName("example-app"); QCoreApplication::setApplicationName("example-app");
QCoreApplication::setApplicationVersion("0.1.0"); QCoreApplication::setApplicationVersion("0.1.0");
} }