Conceptually - this is what I'm proposing:
if(isWeb and HttpContent.Current != null) {
// store context in HttpContext.Current.Items
} else {
// sore it in CallContext.
}
Josh, why bother with a flag called isWeb? If HttpContext.Current is not null then you know you are in the context of a web app; otherwise you aren't. It works great just checking the HTTP context because then the same code can execute in a web app or a non-web app.
I too don't see any issues with log4net referencing System.Web either, or System.Remoting for that matter if it has anything needed in it for this functionality.
--
-glenn-