2011-02-25 46 views
0

我想在运行时发送任意参数到log4net。是否可以即时定义参数并将它们发送出去?我知道你可以这样定义全局PARAMS:发送多个参数到log4net

log4net.GlobalContext.Properties["MyColumn"] = "MyValue"; 

,但我的线沿线的思考更多:

myArrayOfCoolStuff["IP"] = "127.0.0.1"; 
myArrayOfCoolStuff["UserName"] = "jbleaux"; 
log.Error(myArrayOfCoolStuff); 

鉴于log4net的如何趋于默默地消失,当你给它的垃圾,我希望找到专业知识而不是仅仅尝试它。有关如何做到这一点的任何建议?

回答

0

查看此tutorial,尤其是“计算的上下文值”部分。您可以创建一个接受参数的类,并以您需要的任何格式写入它们。

+0

Neato。有一个请求设置threadContext和另一个请求使用它的asp.net情况下是否存在风险?我担心用Alice的IP或其他东西来记录Alice的错误。 – 2011-02-28 14:23:43

+0

如果您将信息留在线程上下文中“更长”的时间段,这肯定会成为问题。但是,您可以将信息存储在会话中,并在“写入”(全局)上下文属性时访问会话。 – 2011-02-28 14:58:03

+0

我最终在扩展方法中做了这个,只是在日志对象周围放上一个锁(log){},它似乎可以工作。这是一个性能问题,但是这个代码只能用于异常处理,所以锁的性能是我们最担心的。谢谢。 – 2011-02-28 16:31:37