NLog - 如何记录所有请求信息

时间:2011-07-19 06:52:02

标签: asp.net nlog

Nlog具有一些ASP.NET日志记录功能(请参阅layout renderers列表),例如

${aspnet-request}

对于日志表单项,我需要知道项目的名称。

 ${aspnet-request:form=myVariable}

但是如何从物品中记录所有物品? 例如

 ${aspnet-request:form}

1 个答案:

答案 0 :(得分:1)

我自己编写自己的LayoutRenderer(事实上,最近刚刚做了几乎相同的事情) - 关于NLog最好的部分之一就是框架的可扩展性。根据您的配置方式,将确定您如何引用/加载自定义布局渲染器,但天空实际上是您可以执行的操作的限制。

在我的脑海中,您可以使用自定义渲染器采用两种方法之一:包装/扩展现有的asp请求渲染器并仅代理所有调用,或者以与nlog一样的方式获取请求对象的钩子做(这很棘手;如果内存服务的话,它会调出来获取COM实例)。

我采用的方法是将NameValueCollection嵌入到传出的LogEventInfo对象本身(在属性字典中),然后使用自定义布局渲染器来提取该集合并进行渲染。