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);
|
|
|
|
// ͨ¹ý LogsPort ¼Ì³Ð
|
|
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;
|
|
};
|
|
}
|