내 디자인에 프로젝트 또는 애플리케이션 전체 트레이스 스위치를 어디에 두어야합니까?

StackOverflow https://stackoverflow.com/questions/806089

  •  03-07-2019
  •  | 
  •  

문제

나는 제공 한 로깅 기능으로 내 프로그램을 향상 시키려고 노력하고 있습니다. System.Diagnostics. 내 솔루션은 여러 프로젝트로 구성되므로 전체 응용 프로그램에 대한 스위치와 모든 프로젝트마다 스위치를 만들고 싶었습니다.

이제 문제는 어떻게이를 달성 할 수 있고 스위치 정의를 어디에 두어야합니까?

Application Wide Switch부터 시작하여, 내가 이해했듯이 C#에는 글로벌 변수와 같은 것이 없기 때문에 어떻게이를 달성 할 수 있습니까?

말할 것입니다

static TraceSwitch ApplicationSwitch = new TraceSwitch("Application", "Enables logging in the whole application.");

모든 클래스에서 일단 이것을 해결 하거나이 클래스가있는만큼 많은 스위치를 만들 수 있습니까? (내 추측은 후자입니다)

아니면 별도의 클래스에 초기화를 한 번 넣어야합니까?

static class GlobalSwitch
{
    static TraceSwitch Application = new TraceSwitch("Application", "Enables logging in the whole application.");
}

그리고 이와 같은 다른 모든 수업에서 그것에 대한 언급

public OtherClass
{
    static TraceSwitch Application = GlobalSwitch.Application;
}

이것은 전체 프로젝트를 위해 1 개의 스위치를 갖는 것을 해결하지만 이것이 좋은 관행입니까?

Application Wide Switch와 관련하여 다음과 같은 프로젝트를 참조해야합니다. GlobalSwitch 가능한 경우 피하고 싶은 다른 모든 프로젝트에서 수업.

이것이 현명한 방법으로 어떻게 할 수 있는지에 대한 단서는 매우 높이 평가 될 것입니다.

도움이 되었습니까?

해결책

나는 일반적으로 추적 스위치 (및 로그 함수)를 중앙 로깅 어셈블리로 래프하여 스위치 (ES)에 정적 인터페이스를 노출시키고 사용중인 기본 로그 기능 (일반적으로 trace.write-funtions)을 호출하는 정적 로그 메소드를 노출시킵니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top