2011-03-04 5 views
1

나는 예외 처리를 위해 내 프로젝트에서 IErrorHandler을 사용합니다.WCF 오류 처리기 예외 로깅

그러나 어떻게 예외로 들어오는 메서드 매개 변수를 로그 할 수 있습니다. 로깅을위한 요청 매개 변수를 가져 오려고합니다.

샘플 방법 :

public Response GetData(Request request) { 
    return new Response(); 
} 

답변

0

두 가지 방법 :

  1. 그러나 자세히 사용자로 설정하면이 파일이 실제 큰, 진짜 빨리하는 경향 모든 요청을 & 응답을 캡처합니다 네이티브 WCF 로거 .

  2. 사용 log4net (다운로드 구글 검색)

    개인 정적 읽기 전용 ILOG 로그 = LogManager.GetLogger (대해서 typeof (MyClass에));

    public class MyClass 
    

    { ...

    public Foo DoSomething(string arg) 
    { 
        try 
        { 
         //do something 
        } 
        catch(Exception e) 
        { 
         log.error(string.format("{0} Arguements: {1}", e.Tostring(), arg); 
        } 
    } 
    

    } 당신은이 같은 요청 메시지를 얻을 수

+2

이것은 예외를 처리하기 위해 IErrorHandler를 구현하는 클래스에서 요청을 기록하는 방법에 대한 대답이 아닙니다. –

4

:

Message requestMessage = OperationContext.Current.RequestContext.RequestMessage; 

내가 일반적으로 할 것은 기록하는 것입니다 전체 요청 XML

0

IErrorHandler에는 그러한 정보가 없습니다. ProvideFault 방법으로 만 원시 메시지를 구문 분석 할 수 있습니다. 서비스 선택 올바른 작동에 대한 책임

// Just synchronous implementation - for asynchronous handle InvokeBegin and InvokeEnd 
public object Invoke(object instance, object[] inputs, out object[] outputs) 
{ 
    try 
    { 
    // Run common invoker - you will create new Invoker as decorator for existing one. 
    return innerInvoker.Invoke(instance, inputs, outputs); 
    } 
    catch(Exception e) 
    { 
    // Handle error here 
    } 
} 

운영 호출자하고 ivoke : -

당신은 다른 방법을 사용하려고 할 수

사용자 정의 IOperationInvokerInvoke 방법으로 그런 짓을 구현합니다. 그것은 단지 아이디어입니다 - 나는 그것을 테스트하지 않았습니다.