2012-05-31 41 views
0

我有一个MVC3 Web应用程序。我正在使用Ninject 2进行依赖注入,并将Ninject日志扩展与log4net进行日志记录。
我的客户希望能够“跟踪”生产中的用户会话以排除可能出现的问题。我们想要实现它的方式是通过动态更改该用户的日志级别,例如通过存储cookie,因此当Ninject.logging提供记录器实例时,它知道提供级别设置为Debug的日志实例。
我没有找到任何方式来做到这一点,无论是通过使用Ninject日志记录或纯粹的log4net。
有什么建议吗?根据请求信息动态更改log4net级别

回答

1

我们结束了修改ninject.extension.logging这样:
- 在LoggerFactoryBase我们修改了GetLogger(IContext context)方法来检索的HttpContext
一个cookie - 如果这个值被设置,我们得到或创建记录器与“追踪”。 +类型名称
- 在log4net配置中,我们有一个名为“Tracing”的记录器设置为调试

1

我认为你可以像编程in this other question那样以编程方式强制关卡。它不是完全提供一个新的logegr实例,而是改变当前的实例,但我想它可以解决您的问题。

+0

这是答案的一部分,我需要更改日志级别。问题是,如果我这样做,它会改变系统中的所有后续请求。我想要的只是一种改变级别的方法,只能用于会话中带有Cookie或参数或其他内容的请求。 –

+0

使用LogManager.GetLogger()创建一个新日志,并将其添加到原始日志的相同appender中。 –