记录对我来说一直是一场噩梦!现在我必须为代理系统再次实现它。在这个代理应用程序中,一些系统要求代理系统调用其他一些服务。我必须记录的是
- 请求时间
- 请求者 IP
- 请求参数为 XML
- 请求的服务名称
- 请求的服务方法
- 响应时间
- XML 形式的响应数据
- 响应消息(如果发生任何异常,它将记录为消息)
我考虑在我的方法中附加两行:
// Log Request
Task.Factory.StartNew(() => Logger.Log(RequestParameters.ToXML(),Assembly.GetCallingAssembly().FullName, MethodBase.GetCurrentMethod().Name, DateTime.Now));
// Invoke requested service and get response
// Log Response
Task.Factory.StartNew(() => Logger.Log(Response.ToXML(), DateTime.Now));
我还想记录嵌套事务。
假设一个事务包含一个请求和一个响应。一个事务可能包含许多其他内部事务。当我收到一个请求时,我应该注册一个事务,并为其插入一个请求,稍后,当收到响应时,我应该更新事务响应。请注意,我正在尝试存储请求和响应关系以便更好地跟踪。
如何安全地将此日志记录过程添加到方法中?我想限制开发人员在所有方法中实现这个日志系统,需要一些方法体的接口或继承。我可以通过属性做到这一点吗?那怎么办?