Вы можете определить имя пользователя (или любое другое) свойство следующим образом:
this.SetThreadContext("UserName", userName);
при условии, что userName
содержит имя пользователя.
Редактировать (Что вы действительно хотите сделать):
Напишите оболочку для log4net (с интерфейсом) и создайте какой-нибудь метод, например SetUserName
, например:
public void SetUserName(Func<string> getUserName)
Этот метод вы вызываете в приложениизапустите, и вы передадите какой-нибудь метод, который возвращает текущего вошедшего в систему пользователя (из HttpContext).Вам нужно будет где-то хранить делегат, возможно, статическую переменную.Затем у вас есть методы для регистрации на различных уровнях, и каждый отдельный метод вызывает делегат (Func<string> getUserName
) и устанавливает свойство контекста потока, как показано выше.Таким образом, вам не нужно устанавливать свойство контекста потока вручную перед каждым вызовом регистратора ...