Capturar nome de usuário com log4net

Atualmente, escrevo todos os eventos log4net em um banco de dados e parece funcionar muito bem. Para capturar a conta de usuário conectada, utilizo este código:

HttpContext context = HttpContext.Current;
if (context != null && context.User != null && context.User.Identity.IsAuthenticated)
{
    MDC.Set("user", HttpContext.Current.User.Identity.Name);
}

O código parece ok, exceto para eventos que não possuem um contexto de usuário associado a eles (por exemplo, um usuário em nossa página pública). Nesse caso, a captura do log4net parece em algum momento gravar a última conta de usuário conectada (incorreta) e em algum momento gravar um nulo (válido). Alguém conseguiu esse recurso para trabalhar de forma confiável em todos os casos? Acredito que vi uma observação de que o MDC não é mais um recurso recomendado, mas não consegui encontrar nenhuma alternativa recomendada.

Nota: Acho estranho que o MDC esteja definido com um nome de conta, mas nunca limpo se nenhum usuário estiver ativo. Isso pode ser parte do problema. No entanto, não encontrei nenhuma extração de código MDC que também limpe o nome de usuário.

questionAnswers(6)

yourAnswerToTheQuestion