根据请求信息动态更改log4net级别

时间:2012-05-31 20:48:05

标签: asp.net-mvc-3 log4net ninject

我有一个MVC3网络应用程序。我使用Ninject 2进行依赖注入,使用log4net进行Ninject日志记录扩展进行日志记录 我的客户希望能够“跟踪”生产中的用户会话以解决可能出现的问题。我们想要实现它的方式是动态更改该用户的日志级别,例如通过存储cookie,这样当Ninject.logging提供记录器实例时,它知道提供一个日志实例,其级别设置为Debug。
我没有找到任何方法,通过使用Ninject日志记录或普通的log4net 有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我认为您可以按照in this other question所述以编程方式强制执行该级别。它并不是完全提供新的logegr实例,而是改变当前的实例,但我认为它可以解决您的问题。

答案 1 :(得分:1)

我们最终以这种方式修改了ninject.extension.logging:
- 在LoggerFactoryBase中,我们修改了GetLogger(IContext context)方法以从HttpContext中检索cookie - 如果设置了此值,我们将使用“跟踪”获取或创建记录器。 +类型名称
- 在log4net配置中,我们有一个名为“Tracing”的记录器设置为Debug