전달 로거는 다중 프로세서 시스템에서 프로젝트를 빌드할 때 모니터링할 이벤트를 선택할 수 있도록 하여 로깅 효율성을 향상시킵니다. 전달 로거를 사용하도록 설정하면 원치 않는 이벤트가 중앙 로거를 압도하고 빌드 시간이 느려지고 로그가 복잡해지지 않도록 방지할 수 있습니다.
전달 로거를 만들려면 인터페이스를 IForwardingLogger 구현한 다음 해당 메서드를 수동으로 구현하거나 클래스 및 미리 구성된 메서드를 사용할 ConfigurableForwardingLogger 수 있습니다. (후자는 대부분의 애플리케이션에 적합합니다.)
이벤트 등록 및 응답
전달 로거는 보조 빌드 엔진에서 보고되는 빌드 이벤트에 대한 정보를 수집합니다. 이 프로세스는 다중 프로세서 시스템에서 빌드하는 동안 기본 빌드 프로세스에서 만든 작업자 프로세스입니다. 그런 다음 전달 로거는 제공한 지침에 따라 중앙 로거로 전달할 이벤트를 선택합니다.
모니터링하려는 이벤트를 처리하려면 전달 로거를 등록해야 합니다. 이벤트를 등록하려면 로거가 Initialize 메서드를 재정의해야 합니다. 이제 이 메서드에는 시스템의 프로세서 수로 설정할 수 있는 선택적 매개 변수 nodecount
가 포함됩니다. (기본적으로 값은 1입니다.)
모니터링할 수 있는 이벤트의 예는 TargetStarted, ProjectStarted및 ProjectFinished.
다중 프로세서 환경에서는 이벤트 메시지가 순서가 뒤바뀌어 수신될 가능성이 높습니다. 따라서 전달 로거에서 이벤트 처리기를 사용하여 이벤트를 평가하고 이를 프로그래밍하여 중앙 로거로 전달하기 위해 리렉터에 전달할 이벤트를 결정해야 합니다. 이를 위해 모든 메시지에 연결된 클래스를 사용하여 BuildEventContext 전달하려는 이벤트를 식별한 다음 이벤트 ConfigurableForwardingLogger 이름을 클래스(또는 해당 하위 클래스)에 전달할 수 있습니다. 이 메서드를 사용하는 경우 이벤트를 전달하는 데 다른 특정 코딩이 필요하지 않습니다.
전달 로거 지정
전달 로거가 어셈블리로 컴파일된 후에는 빌드 중에 이를 사용하도록 MSBuild에 지시해야 합니다. 이렇게 하려면 -FileLogger
, -FileLoggerParameters
, -DistributedFileLogger
스위치를 MSBuild.exe와 함께 사용하세요. 스위치는 -FileLogger
MSBuild.exe 로거가 직접 연결되어 있음을 알려줍니다. 스위치는 -DistributedFileLogger
노드당 로그 파일이 있음을 의미합니다. 전달 로거에서 매개 변수를 설정하려면 스위치를 -FileLoggerParameters
사용합니다. 이러한 스위치 및 기타 MSBuild.exe 스위치에 대한 자세한 내용은 명령줄 참조를 참조하세요.
다중 프로세서에 대응하는 로거
다중 프로세서 시스템에서 프로젝트를 빌드할 때 각 프로세서의 빌드 메시지는 통합 시퀀스로 자동으로 인터리브되지 않습니다. 대신 모든 메시지에 연결된 클래스를 사용하여 BuildEventContext 메시지 그룹화 우선 순위를 설정해야 합니다. 다중 프로세서 빌드에 대한 자세한 내용은 다중 프로세서 환경에서 로깅을 참조하세요.