mirror of
https://gitlab.com/spaceti-app/integrations/common/server-sdk.git
synced 2026-07-12 23:00:46 +02:00
108 lines
2.5 KiB
C++
108 lines
2.5 KiB
C++
#pragma once
|
|
|
|
#include "loggermessage.h"
|
|
|
|
// Qt
|
|
#include <QObject>
|
|
#include <QLoggingCategory>
|
|
#include <QMutex>
|
|
|
|
|
|
Q_DECLARE_LOGGING_CATEGORY(sdkcore)
|
|
Q_DECLARE_LOGGING_CATEGORY(sdknetwork)
|
|
Q_DECLARE_LOGGING_CATEGORY(sdkutils)
|
|
Q_DECLARE_LOGGING_CATEGORY(sdkdb)
|
|
|
|
namespace serversdk {
|
|
|
|
/** # Loggger
|
|
*
|
|
* Class for logging qDebug qWarning qInfo and qCritical messages
|
|
*
|
|
*
|
|
* ## Basic usage
|
|
*
|
|
* @code
|
|
* int main() {
|
|
* serversdk::initAppLogger(); // <-- then Logger::outputMessage will handle all messages
|
|
* // Log messge Filtering
|
|
* QStringList filters;
|
|
* filters << "qt.*=false";
|
|
* filters << "sdk.core.*=true";
|
|
* QLoggingCategory::setFilterRules(filters.join(QStringLiteral("\n")));
|
|
* }
|
|
* @endcode
|
|
*
|
|
* @see https://doc.qt.io/qt-5/qdebug.html
|
|
* @see https://doc.qt.io/qt-5/qloggingcategory.html
|
|
*
|
|
*/
|
|
class Logger : public QObject
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
// User defined consumer ( messages will be sent there using insertMessage )
|
|
static Logger* sConsumer;
|
|
|
|
/**
|
|
* # Default values
|
|
*
|
|
* * bits - Expected 32bits
|
|
* * subjectId - must be valid ( not possible to add token withou valid subject )
|
|
*
|
|
* @m_class{m-block m-error}
|
|
|
|
@par Third-party license info
|
|
This utility depends on the [Magnum engine](https://magnum.graphics).
|
|
It's licensed under MIT, so all you need to do is mention it in the
|
|
credits of your commercial app.
|
|
*
|
|
*
|
|
*/
|
|
explicit Logger(QObject *parent = nullptr);
|
|
|
|
|
|
/**
|
|
* @brief User specific consumer of logger messages
|
|
* @param consumer - sublass of serversdk::Logger
|
|
*
|
|
* @code
|
|
* #include "core.h"
|
|
* int main() {
|
|
* serversdk::initAppLogger();
|
|
* serversdk::Logger logger;
|
|
* serversdk::Logger::setConsumer(&logger);
|
|
* }
|
|
* @endcode
|
|
*
|
|
*/
|
|
static void setConsumer(Logger *consumer);
|
|
|
|
|
|
/** Only Message handler for Qt
|
|
*
|
|
* @code
|
|
* #include "core.h"
|
|
* int main() {
|
|
* serversdk::initAppLogger();
|
|
* }
|
|
* @endcode
|
|
*/
|
|
static void outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg);
|
|
|
|
/** Pushing messges from installed message handler */
|
|
virtual void pushMessage(const LoggerMessage& logmsg);
|
|
QList<serversdk::LoggerMessage> getNewMessages(int currentCount);
|
|
|
|
|
|
signals:
|
|
void messageReceived(const serversdk::LoggerMessage &message);
|
|
void messageListUpdated();
|
|
private:
|
|
QList<LoggerMessage> mLogMessages; //!< Test
|
|
QMutex mMutex;
|
|
};
|
|
|
|
|
|
} // core
|