The formatting code that pads the logv2 fields is currently very tricky and I've run into difficulty understanding extensions to it already in a couple code reviews.
Easy to fix.
Currently:
static const auto& fmtStrBody =
*new auto(fmt::compile<StringData, // severity start
StringData,
StringData,
int,
StringData, // component start
StringData,
StringData,
int,
StringData, // id start
StringData,
StringData,
int,
StringData, // context start
StringData,
StringData> // message start
(R"("}},)" // close timestamp
R"("{}":"{}"{: <{}})" // severity with padding for the comma
R"("{}":"{}"{: <{}})" // component with padding for the comma
R"("{}":{}{: <{}})" // id with padding for the comma
R"("{}":"{}",)" // context
R"("{}":")" // message
));
fmt::format_int idString(id);
compiled_format_to(
buffer,
fmtStrBody,
// severity, left align the comma and add padding to create fixed column width
constants::kSeverityFieldName,
severityString,
","_sd,
3 - severityString.size(),
// component, left align the comma and add padding to create fixed column width
constants::kComponentFieldName,
componentString,
","_sd,
9 - componentString.size(),
// id
constants::kIdFieldName,
StringData(idString.data(), idString.size()),
","_sd,
8 - idString.size(),
// context
constants::kContextFieldName,
context,
// message
constants::kMessageFieldName);