对于每个WCF方法,我需要在调用方法后立即生成日志消息,并在方法结束后生成另一条日志消息。例如,代码可能如下所示:
public string Method1()
{
try {
Log("Method1 start");
/*implementation is here*/
}
finally
{
Log("Method1 end");
}
}
这两个日志需要包含WCF方法名称。现在我需要将它添加到所有WCF方法。有可能我可以创建一个通用方法来执行此操作,这样我就不需要在每次WCF调用时重复写这个吗?
答案 0 :(得分:1)
您要找的是INFO - LogMediator To: , WSAction: urn:mediate, SOAPAction: urn:mediate, MessageID: ID:xxx-59490-1467971573210-1:2:1:4:1, Direction: request, Payload: {"value":"some value"}
。 WCF使您可以在请求处理的不同阶段添加拦截器。
实现一个看起来像你的例子的拦截器。 有关interceptors
的信息我建议您的拦截器功能如下所示: 要获取方法名称,请查看此SO question
Interceptors
{
try
{
Log(string.Format("Entering method: {0}",/*function name*/));
//proceed with execution
Log(string.Format("Exiting method: {0}",/*function name*/));
}
catch (Exception exception)
{
Log(string.Format("Exiting method {0} with failure: {1}:,/*function name*/,exception.ToString());
}
消息打印值(如果有的话),并且在返回值的情况下也打印Entering
。使日志阅读变得更加有用。答案 1 :(得分:1)