#pragma once #include "priority.h" #include "record.h" #include "backend.h" #include class TFilteredLogBackend: public TLogBackend { THolder Backend; ELogPriority Level; public: TFilteredLogBackend(THolder&& t, ELogPriority level = LOG_MAX_PRIORITY) noexcept : Backend(std::move(t)) , Level(level) { } ELogPriority FiltrationLevel() const override { return Level; } void ReopenLog() override { Backend->ReopenLog(); } void WriteData(const TLogRecord& rec) override { if (rec.Priority <= (ELogPriority)Level) { Backend->WriteData(rec); } } };