13 template<
class out_it_t>
16 char_type chDateDelimiter,
17 char_type chTimeDelimiter,
18 std::chrono::system_clock::time_point time) noexcept
20 auto timeSeconds = floor<std::chrono::seconds>(time);
24 QXT(
"{:%d}{}{:%m}{}{:%Y}_{:%H}{}{:%M}{}{:%S}"),
41 case verbosity::detailed:
44 case verbosity::verbose:
47 case verbosity::important:
50 case verbosity::warning:
53 case verbosity::error:
56 case verbosity::critical:
67 std::thread::id threadId,
68 std::chrono::system_clock::time_point messageTime,
70 string_view svFunction,
72 string sMessage) noexcept
78 const bool bAddCategory = !svCategory.empty() && svCategory != CatDefault.get_name();
80 constexpr
size_t nTimeSize = 19;
81 const size_t nCategorySize = bAddCategory ? svCategory.size() + 2 : 0;
82 const size_t nPrefixSize = svVerbosityPrefix.size() + nTimeSize + 2 + nCategorySize;
84 sMessage.insert(0, QXT(
"\0"), nPrefixSize);
88 sMessage.data() + nPos,
89 svVerbosityPrefix.data(),
90 svVerbosityPrefix.size() *
sizeof(string_view::value_type));
91 nPos += svVerbosityPrefix.size();
96 sMessage[nPos] = QXT(
']');
101 sMessage[nPos] = QXT(
'[');
104 std::memcpy(sMessage.data() + nPos, svCategory.data(), svCategory.size() *
sizeof(string::value_type));
105 nPos += svCategory.size();
107 sMessage[nPos] = QXT(
']');
111 sMessage[nPos] = QXT(
' ');
114 sMessage += QXT(
'\n');
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.