in prod/native/libcommon/code/Logger.cpp [77:114]
void Logger::printf(LogLevel level, const char *format, ...) const {
va_list args;
va_start(args, format);
auto msg = elasticapm::utils::stringVPrintf(format, args);
va_end(args);
std::string output = "[EDOT] "s;
output.append(getFormattedTime());
output.append(" ");
size_t indexOfProcessData = output.length();
output.append(getFormattedProcessData());
size_t indexOfLogLevel = output.length();
output.append(" [");
output.append(getLogLevelName(level));
output.append("] ");
size_t indexOfMessage = output.length();
output.append(std::move(msg));
output.push_back('\n');
auto outputSv = std::string_view{output};
auto msgSv = outputSv.substr(indexOfMessage, output.length() - indexOfMessage - 1);
auto timeSv = outputSv.substr(0, indexOfProcessData - 1);
auto processSv = outputSv.substr(indexOfProcessData, indexOfLogLevel - indexOfProcessData);
auto levelSv = outputSv.substr(indexOfLogLevel + 1, indexOfMessage - indexOfLogLevel - 2);
std::lock_guard<SpinLock> lock(spinLock_);
for (auto const &sink : sinks_) {
if (sink->getLevel() < level) {
continue;
}
sink->writeLog(output, msgSv, timeSv, levelSv, processSv);
}
}