우리 팀은 WCF 서비스에 대한 예외 처리 및 로깅 구현을 자동화하는 라이브러리를 만들었습니다. 개발자는이 라이브러리를 사용하여 사용자 지정 특성을 사용하여 서비스를 꾸밀뿐 아니라 간단한 구성 파일 항목을 설정하고 일반 예외 처리 및 로깅 메커니즘을 이미 활용할 수 있습니다..NET의 특성/장식자를위한 IOC
다음은 라이브러리를 사용하는 방법의 예 :
[ErrorHandlingBehavior (LogWriterOption.EmailLogWriter, LogWriterOption.SQLLogWriter)]
public class SampleService : ISampleService
{
public string GetData(int value)
{
throw new DivideByZeroException();
//return string.Format("You entered: {0}", value);
}
}
ErrorHandlingBehavior 클래스는 로그 위치를 파악하는 매개 변수의 LogWriterOption 열거 형에 소요 로거 객체를 사용합니다.
원래 의도는 개발자가 자신의 로깅 메커니즘을 지정하고 ErrorHandlingBehavior에 제공하여 Logger 클래스에서 솔루션의 종속성을 제거합니다 (대신 ILogger를 구현하는 모든 클래스를 사용함). 그러나, 아래의 방법으로 속성을 지정하면 오류가 발생합니다 :
[ErrorHandlingBehavior (new Logger (new HashSet<LogWriterOptions>
{LogWriterOption.EmailLogWriter, LogWriterOption.SQLLogWriter}))]
속성을 지정할 때 우리는 무엇을 인스턴스화 할 수 없습니다 것, 따라서 우리는 지금 사용자가 자신의 로깅 메커니즘을 지정할 수 없습니다.
누구든지이 문제를 해결할 방법을 알고 있습니까? depenendency를 하드 와이어하는 대신 ILogger를 구현하는 클래스의 인스턴스를 속성에 어떻게 공급할 수 있습니까?
우리는 log4net도 사용했지만, 우리가 원했던 것은 중학교의 devs가 사용하기에는 조금 우호적 인 것이 었습니다. log4net의 문제점은 부피가 큰 구성 섹션이 있다는 것입니다. 이는 많은 사용자 지정 작업을 수행하고자하는 숙련 된 개발자에게는 유용하지만 방금 시작한 경우 구현하는 것은 귀찮습니다. 우리의 아이디어는 매우 간단한 설정 파일로 dll을 참조함으로써 바로 사용할 수있는 것이었다. 로깅 또는 WCF 오류 처리에 대한 지식이 부족한 주니어 개발자는이 DLL을 참조 할 수 있으며 오류 메시지는 로깅 및 처리 시스템에 기본적인 오류가 있습니다. –
@JericCantos - 내 업데이트를 참조하십시오. – ErnieL