That's right. Use this instead, as best practice.
Code:
<%P{user}>
But this is only good if you are setting the GlobalContext property "user". I do it in a singleton in my data layer, which works for both win forms and asp.net apps.
Code:
log4net.GlobalContext.Properties["user"] = System.Threading.Thread.CurrentPrincipal.Identity.Name.ToString();
If you just want username you can use %username, but this gets the username from the thread for each log line. I've found that setting the globalContext property to be much faster when there is alot of logging going on.