Files
FeatherLog/include/featherlog/log_outputter.hpp
T
2026-08-19 09:00:11 +08:00

33 lines
916 B
C++

#pragma once
#include <memory>
#include <featherlog/log_formatter.hpp>
#include <featherlog/log_message.hpp>
#include <featherlog/flog_definitions.h>
namespace flog
{
class FLOG_API LogOutputter
{
public:
LogOutputter(std::string name, std::unique_ptr<LogFormatter> formatter) noexcept
: m_name(std::move(name)), m_logFormatter(std::move(formatter))
{ }
virtual ~LogOutputter() = default;
NODISCARD std::string FLOG_CALL getName() const noexcept { return m_name; }
std::unique_ptr<LogFormatter> FLOG_CALL set_formatter(const std::unique_ptr<LogFormatter> &formatter);
NODISCARD const std::unique_ptr<LogFormatter> & FLOG_CALL get_formatter() const;
virtual void FLOG_CALL write_log(const LogMessage &message) = 0;
protected:
const std::string m_name;
std::unique_ptr<LogFormatter> m_logFormatter;
};
}