我是编写.NET Web服务的新手。我发现自己正在编写一个包含大约20个Web服务的.NET WCF应用程序。我想记录以下事件:
我编写了一个简单的函数,在每个点执行SQL插入。每个Web服务请求至少有两个插入 - 一个在请求中,另一个在响应中。 10个以上方法中的每一个都需要至少4个这些日志记录调用。我书中的维护太多了。
我认为这种做法太难而且繁琐 - 我需要做大量的工作来维护它。我过去曾使用过Axis2的LOG4J(我没有配置),它能够在Web服务器上记录以上所有内容。需要抛出异常,但请求/响应日志记录是自动处理的。我不太了解.NET,觉得我对我的选择有很好的处理。
此时我正在考虑使用Log4net或企业库语义记录应用程序块。我有更好的选择吗?关于哪个课程对于相对新手来说最简单的任何建议?
谢谢, 马特
答案 0 :(得分:4)
您的问题的解决方案需要分为两部分:
For 1:您可以创建一个消息检查器并将其注册为服务行为。这意味着您将拥有一个单个点来拦截所有请求和响应 - 允许您在一个位置处理它们。 This article解释了如何编写和部署此类检查器。这很容易。
对于2:log4net和ENtLiB绝对是主要候选者。
选择的一些注意事项:
无论您的选择如何,都需要考虑性能因素。您没有提到您期望的请求数量,但是大量的请求记录每个请求都会影响性能。 有各种策略可以解决这个问题,但这是在您分析应用程序之后的故事。
答案 1 :(得分:0)
如果您只是在寻找事务审计日志记录(可能是为了支持开发,调试和早期实现阶段),那么您可能需要考虑使用WCF跟踪和消息日志记录功能。 WCF跟踪功能提供了一种相对简单的内置方法来监视与WCF服务之间的通信。对于测试和调试环境,请配置信息或详细活动跟踪并启用消息日志记录。在最初部署和测试新服务或向现有服务添加新操作和/或通信绑定时,活动跟踪和消息记录的组合应该证明是有益的。如果您担心维护,那么您可以设置跟踪日志以使用设置大小,然后“重新循环”文件空间。
以下链接提供了一个很好的概述:
http://msdn.microsoft.com/en-us/library/ms733025.aspx
http://msdn.microsoft.com/en-us/library/aa702726.aspx