#pragma once #include "loggermessage.h" // Qt #include #include #include Q_DECLARE_LOGGING_CATEGORY(sdkcore) Q_DECLARE_LOGGING_CATEGORY(sdknetwork) Q_DECLARE_LOGGING_CATEGORY(sdkcompress) 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 constructor explicit Logger(QObject *parent = nullptr); /** * @brief User specific consumer of logger messages * @param consumer - sublass of serversdk::Loger * * @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); /** Pusing 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; QMutex mMutex; }; } // core