#ifndef     __LOG_HANDLER_H__
#define     __LOG_HANDLER_H__

#include <QObject>
#include <QPlainTextEdit>
#include <QMutex>

class LogHandler : public QObject {
    Q_OBJECT
public:
    // 获取单例实例
    static LogHandler* log_instance();

    // 初始化日志输出目标（UI控件）
    static void log_init(QPlainTextEdit *logWidget = nullptr);

    // Qt 消息处理函数（静态）
    static void log_handleMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg);

signals:
    // 日志信号（用于跨线程传递）
    void log_messageLogged(const QString &formattedMsg);

private:
    explicit LogHandler(QObject *parent = nullptr);
    static LogHandler *s_instance;      // 单例实例
    static QMutex     s_mutex;             // 线程安全锁
    QPlainTextEdit    *m_logWidget;       // 日志输出UI组件
};

#endif
