41 lines
1.1 KiB
C
41 lines
1.1 KiB
C
|
#pragma once
|
|||
|
|
|||
|
#include <QString>
|
|||
|
#include <QMutex>
|
|||
|
#include <QDir>
|
|||
|
#include <memory>
|
|||
|
|
|||
|
namespace logs {
|
|||
|
class LogsPort {
|
|||
|
public:
|
|||
|
virtual ~LogsPort() = default;
|
|||
|
|
|||
|
virtual void write(const QString& type, const QString& title, const QString& msg) = 0;
|
|||
|
virtual void information(const QString& title, const QString& msg) = 0;
|
|||
|
virtual void warning(const QString& title, const QString& msg) = 0;
|
|||
|
virtual void error(const QString& title, const QString& msg) = 0;
|
|||
|
|
|||
|
virtual void flush(bool fouce = false) = 0;
|
|||
|
};
|
|||
|
|
|||
|
class LogsOutput : public LogsPort {
|
|||
|
public:
|
|||
|
LogsOutput(const QDir& target, int cache_size = 200);
|
|||
|
|
|||
|
// ͨ<><CDA8> LogsPort <20>̳<EFBFBD>
|
|||
|
void write(const QString& type, const QString& title, const QString& msg) override;
|
|||
|
void information(const QString& title, const QString& msg) override;
|
|||
|
void warning(const QString& title, const QString& msg) override;
|
|||
|
void error(const QString& title, const QString& msg) override;
|
|||
|
|
|||
|
virtual void flush(bool fouce = false);
|
|||
|
|
|||
|
private:
|
|||
|
QMutex _mutex;
|
|||
|
int _cache_size;
|
|||
|
std::shared_ptr<QFile> _target_file;
|
|||
|
|
|||
|
QList<QString> _message_buffer;
|
|||
|
};
|
|||
|
}
|