#pragma once #if !defined(MIJIN_LOGGING_STDIO_SINK_HPP_INCLUDED) #define MIJIN_LOGGING_STDIO_SINK_HPP_INCLUDED 1 #include "./formatting.hpp" namespace mijin { template typename TAllocator = std::allocator, deleter_type>> TDeleter = AllocatorDeleter>>>> requires(allocator_type>) class StdioSink : public FormattingLogSink { public: using base_t = FormattingLogSink; using typename base_t::formatter_ptr_t; explicit StdioSink(not_null_t formatter, TAllocator allocator = {}) MIJIN_NOEXCEPT_IF(std::is_nothrow_move_constructible_v>) : base_t(std::move(formatter), std::move(allocator)) {} void handleMessageFormatted(const LogMessage& message, const char* formatted) MIJIN_NOEXCEPT override { if (*message.level >= mijin_log_level::WARNING) { std::fputs(formatted, stderr); std::fputc('\n', stderr); } else { std::puts(formatted); } } }; } // namespace mijin #endif // !defined(MIJIN_LOGGING_STDIO_SINK_HPP_INCLUDED)