나는 예외 처리를 위해 내 프로젝트에서 IErrorHandler
을 사용합니다.WCF 오류 처리기 예외 로깅
그러나 어떻게 예외로 들어오는 메서드 매개 변수를 로그 할 수 있습니다. 로깅을위한 요청 매개 변수를 가져 오려고합니다.
샘플 방법 :
public Response GetData(Request request) {
return new Response();
}
나는 예외 처리를 위해 내 프로젝트에서 IErrorHandler
을 사용합니다.WCF 오류 처리기 예외 로깅
그러나 어떻게 예외로 들어오는 메서드 매개 변수를 로그 할 수 있습니다. 로깅을위한 요청 매개 변수를 가져 오려고합니다.
샘플 방법 :
public Response GetData(Request request) {
return new Response();
}
두 가지 방법 :
그러나 자세히 사용자로 설정하면이 파일이 실제 큰, 진짜 빨리하는 경향 모든 요청을 & 응답을 캡처합니다 네이티브 WCF 로거 .
사용 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);
}
}
} 당신은이 같은 요청 메시지를 얻을 수
:
Message requestMessage = OperationContext.Current.RequestContext.RequestMessage;
내가 일반적으로 할 것은 기록하는 것입니다 전체 요청 XML
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 : -
당신은 다른 방법을 사용하려고 할 수사용자 정의 IOperationInvoker
및 Invoke
방법으로 그런 짓을 구현합니다. 그것은 단지 아이디어입니다 - 나는 그것을 테스트하지 않았습니다.
이것은 예외를 처리하기 위해 IErrorHandler를 구현하는 클래스에서 요청을 기록하는 방법에 대한 대답이 아닙니다. –