2009-04-02 4 views
1

WCF 웹 서비스를 작성하고 있는데 웹에서 throw 한 예외 로깅에 Castle 인터셉터 메커니즘을 사용하는 우아한 (aspect 지향적 인) 방법이 있는지 궁금합니다. 행동 양식? 내가 IInterceptor inteface에 대해 알고 있지만 거기에 예외 정보를 찾을 수 없습니다.Castle을 사용하여 WCF에서 예외를 로깅하는 경우

나는 Castle, AOP and Logging in .NET을 보았지만 메소드의 매개 변수만을 다루었습니다.

이렇게하는 것이 더 나은 (WCF 또는 성) 메커니즘이 있습니까? BTW 나는 로깅을 위해 log4net을 사용하고 있습니다.

업데이트 : WCF의 로깅 기능에 대해 알고 있지만 WCF 환경뿐 아니라 일반 솔루션을 더 많이 찾고있었습니다.

미리 감사드립니다.

답변

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

+0

좋아요,하지만 일반적인 질문을 드리겠습니다. 비 -WCF 환경에서 어떻게 할 것입니까? –

+0

답변을 업데이트했습니다. –

2

,이 같은 뭔가를 할 수는 :

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 
    } 
} 
관련 문제