15 , m_bUsingColors(streamConfig.bUseColors)
16 , m_bSyncUsualAndErrorMessages(streamConfig.bSyncUsualAndErrorMessages)
24 color lineColor = color::white();
27 case verbosity::detailed:
28 case verbosity::verbose:
29 lineColor = color::gray();
33 lineColor = color::white();
36 case verbosity::important:
37 lineColor = color::khaki();
40 case verbosity::warning:
41 lineColor = color::orange();
44 case verbosity::error:
45 lineColor = color::crimson();
48 case verbosity::critical:
49 lineColor = color::dark_red();
53 struct logger_color_range
55 std::pair<size_t, size_t> range { 0, 0 };
56 color rangeColor = color::white();
61 std::array<logger_color_range, 1> colors;
62 size_t colorsCount = 0;
72 string_view(svMessage.data(), colorsCount == 0 ? svMessage.size() : colors.front().range.first),
75 for (
size_t i = 0; i < colorsCount; ++i)
79 string_view(svMessage.data() + colors[i].range.first, colors[i].range.second - colors[i].range.first),
80 colors[i].rangeColor);
84 svMessage.data() + colors[i].range.second,
85 (i + 1 < colorsCount ? colors[i + 1].range.first : svMessage.size()) - colors[i].range.second),
91 cout_common(eVerbosity, svMessage);
97 if (m_bSyncUsualAndErrorMessages)
99 const bool bCurrentMessageIsError =
is_error(eCurrentMessageVerbosity);
101 if (bCurrentMessageIsError != m_bPrevMessageWasError)
104 m_bPrevMessageWasError = bCurrentMessageIsError;
Base class for logger streams.
void flush()
Flush the stream.
void check_previous_message(verbosity eCurrentMessageVerbosity)
Check the previous message type and flush if needed.
base_standard_streams_stream(const config &streamConfig) noexcept
base_standard_streams_stream object constructor
virtual void do_log(const category &category, verbosity eVerbosity, string_view svMessage) override
Proceed stream logging.
A category is a class that identifies a particular piece of code. This code can be located in differe...
constexpr string_view get_name() const noexcept
Get category name.
constexpr const color & get_color() const noexcept
Get category color.
bool is_error(verbosity eVerbosity) noexcept
Check if the verbosity level is an error.