// We subtract 1 from 'len' when assigning to 'end' to avoid out of
// bounds exception in return name.Substring(end+1, len). This can happen if
// precision is 1 and the logger name ends with a dot.
int end = len - 1;
for(int i=m_precision; i>0; i--)
{
end = name.LastIndexOf('.', end - 1);
if (end == -1)

{
writer.Write(name);
return;
}

}
writer.Write(name.Substring(end+1, len-end-1));
}
}

if "string name = GetFullyQualifiedName(loggingEvent); " return '?' (noname class-name) in line "end = name.LastIndexOf('.', end - 1);" exceptrion because end = 0...