[Base] Add support for multiple log sinks in Logger

This commit is contained in:
Satori
2020-09-06 19:20:59 +01:00
committed by Rick Gibbed
parent 36466231d0
commit 42b10209fe
2 changed files with 72 additions and 23 deletions

View File

@@ -34,6 +34,31 @@ enum class LogLevel {
Trace,
};
class LogSink {
public:
virtual ~LogSink() = default;
virtual void Write(const char* buf, size_t size) = 0;
virtual void Flush() = 0;
};
class FileLogSink final : public LogSink {
public:
explicit FileLogSink(FILE* file) : file_(file) {}
virtual ~FileLogSink() {
if (file_) {
fflush(file_);
fclose(file_);
}
}
void Write(const char* buf, size_t size) override;
void Flush() override;
private:
FILE* file_;
};
// Initializes the logging system and any outputs requested.
// Must be called on startup.
void InitializeLogging(const std::string_view app_name);