#pragma once #include "loggermessage.h" // Qt #include #include #include 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 getNewMessages(int currentCount); signals: void messageReceived(const serversdk::LoggerMessage &message); void messageListUpdated(); private: QList mLogMessages; //!< Test QMutex mMutex; }; } // core