If there's a global "isWeb" setting, you wouldn't be able to easily tell certain loggers (i.e. a certain namespaces) to use CallContext. What about setting the LogicalThreadContext's storage at the logger level?
<root> <level value="ALL" /> <appender-ref ref="FileAppender" /> <logicalThreadContextProperties type="log4net.Util.LogicalThreadContextProperties" /> </root> <logger name="Company.Website"> <level value="ALL" /> <logicalThreadContextProperties type="log4net.Util.HttpContextLogicalThreadContextProperties" /> <appender-ref ref="WebsiteFileAppender" /> </logger> <logger name="Company.Website.BackgroundThreads"> <level value="ALL" /> <logicalThreadContextProperties type="log4net.Util.LogicalThreadContextProperties" /> <appender-ref ref="BackgroundThreadsFileAppender" /> </logger> In the example above, the Company.Website.BackgroundThreads namespace contains loggers who don't have access to HttpContext. Appenders already do something similiar with their SecurityContext property. Its possible for every appender to have a unique SecurityContext implementation. We could make a LogicalThreadContextPropertiesProvider class that mimics SecurityContextProvider in that the DefaultProvider property returns either a normal CallContext storage provider or a HttpContext storage provider. Would there also need to be specialized property patterns that know where to look? My idea sounds overly complex :-/ --- josh robb <[EMAIL PROTECTED]> wrote: > On 2/16/06, GlennDoten <[EMAIL PROTECTED]> wrote: > > 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. > > Thanks for the feedback - I initially thought of this - but I thought > it made sense to keep the new behaviour optional. (It's possible to > imagine circumstances where you'd rather use the CallContext even if > you're in the middle of a web request). > > Are we getting close to agreement about what the patch should look > like? If so I can knock something together - to hopefully generate > some more discussion. > > j. >