Nlog具有一些ASP.NET日志记录功能(请参阅layout renderers列表),例如
${aspnet-request}
对于日志表单项,我需要知道项目的名称。
${aspnet-request:form=myVariable}
但是如何从物品中记录所有物品? 例如
${aspnet-request:form}
答案 0 :(得分:1)
我自己编写自己的LayoutRenderer(事实上,最近刚刚做了几乎相同的事情) - 关于NLog最好的部分之一就是框架的可扩展性。根据您的配置方式,将确定您如何引用/加载自定义布局渲染器,但天空实际上是您可以执行的操作的限制。
在我的脑海中,您可以使用自定义渲染器采用两种方法之一:包装/扩展现有的asp请求渲染器并仅代理所有调用,或者以与nlog一样的方式获取请求对象的钩子做(这很棘手;如果内存服务的话,它会调出来获取COM实例)。
我采用的方法是将NameValueCollection嵌入到传出的LogEventInfo对象本身(在属性字典中),然后使用自定义布局渲染器来提取该集合并进行渲染。