in src/log4net/Layout/Pattern/NamedPatternConverter.cs [113:146]
protected sealed override void Convert(TextWriter writer, LoggingEvent loggingEvent)
{
writer.EnsureNotNull();
string? name = GetFullyQualifiedName(loggingEvent);
if (_precision <= 0 || name is null || name.Length < 2)
{
writer.Write(name);
}
else
{
int len = name.Length;
string trailingDot = string.Empty;
if (name.EndsWith(Dot))
{
trailingDot = Dot;
name = name.Substring(0, len - 1);
len--;
}
int end = name.LastIndexOf(Dot);
for (int i = 1; end > 0 && i < _precision; i++)
{
end = name.LastIndexOf('.', end - 1);
}
if (end == -1)
{
writer.Write(name + trailingDot);
}
else
{
writer.Write(name.Substring(end + 1, len - end - 1) + trailingDot);
}
}
}