PenetrateBase/PenetrateBasic/logs_port.h

41 lines
1.1 KiB
C
Raw Permalink Normal View History

2024-11-20 10:31:31 +00:00
#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;
};
}