feat: add file log sink
This commit is contained in:
@@ -0,0 +1,48 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <seallib/log.h>
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
|
#include <string>
|
||||||
|
#include <mutex>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
|
using namespace seallib;
|
||||||
|
|
||||||
|
class FileSink : public ILogSink
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FileSink(const std::string& filename)
|
||||||
|
{
|
||||||
|
_file.open(utils::getExePath() + filename, std::ios::out | std::ios::app);
|
||||||
|
}
|
||||||
|
|
||||||
|
~FileSink()
|
||||||
|
{
|
||||||
|
if (_file.is_open())
|
||||||
|
_file.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void receiveLog(LogType type, std::string_view loggerName, std::string_view msg) override
|
||||||
|
{
|
||||||
|
std::lock_guard<std::mutex> lock(_mutex);
|
||||||
|
if (_file.is_open())
|
||||||
|
{
|
||||||
|
_file << "[" << loggerName << "] ["
|
||||||
|
<< seallib::getLogTypeName(type) << "] "
|
||||||
|
<< msg << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static std::shared_ptr<FileSink> getSharedInstance()
|
||||||
|
{
|
||||||
|
static std::shared_ptr<FileSink> instance = std::make_shared<FileSink>("hex-unlocked.log");
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::ofstream _file;
|
||||||
|
std::mutex _mutex;
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user