我正在编写一个WCF Web服务,我想知道是否有一种优雅的(面向方面的)方法来使用Castle拦截器机制来记录我的Web方法抛出的异常?我知道IInterceptor
接口,但我找不到任何异常信息。
我见过Castle, AOP and Logging in .NET,但它只涵盖了方法的参数。
这样做有更好的(WCF或城堡)机制吗?顺便说一句,我正在使用log4net进行日志记录。
更新:我了解WCF的日志记录工具,但我正在寻找更多通用解决方案,而不仅仅是在WCF环境中。
提前致谢。
答案 0 :(得分:2)
如果你想一般使用Castle Interceptors,你可以这样做:
public void Intercept(IInvocation invocation)
{
//do some preprocessing here if needed
try
{
invocation.Proceed()
}
catch(Exception e)
{
LogException(e);
throw;
}
finally
{
//do some postprocessing jf needed
}
}
答案 1 :(得分:1)
您应该在WCF跟踪和日志记录中使用构建。然后,您可以使用WCF跟踪查看器,它将来自服务和客户端的日志拼凑在一起,以便您可以看到完整的消息流。
http://www.devx.com/dotnet/Article/37389/0/page/6
WCF中有IErrorHandler接口:
public interface IErrorHandler
{
bool HandleError(Exception error, MessageFault fault);
void ProvideFault(Exception error, ref MessageFault fault, ref string faultAction);
}
此处有更多详情:http://www.extremeexperts.com/Net/Articles/ExceptionHandlingInWCF.aspx