.NET에서 심하게 분산되고 병렬화 된 시스템에서 임의의 객체를 로깅하기위한 프레임 워크를 찾고 [close

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

문제

(참고 : .NET 로깅 프레임 워크와 관련하여 몇 가지 질문을 보았지만 우리의 요구 사항과 비슷한 것을 보지 못했습니다. 따라서이 요건을 복제 한 것으로 닫지 마십시오.)

다음과 같은 기능을 갖춘 고도로 분산되고 병렬 .NET 응용 프로그램을위한 로깅 프레임 워크가 필요합니다.

  • 로그 메시지는 많은 스레드에서 생성되므로 스레드 안전이어야합니다.
  • 각 로그 메시지에는 타임 스탬프가 있어야합니다. 프레임 워크가 이것을 자동으로 추가하면 더 쉬워집니다.
  • 타임 스탬프 외에도 적어도 심각도/표현 또는 로그 메시지에 첨부하는 것과 유사한 것이 있어야하므로 필터링 할 수 있습니다. 더 (직교) 사전 정의 된 매개 변수 (메시지 소스, 의도 된 청중, 메시지 종류, 무엇이든)가 놀리는 것이 좋을 것입니다.
  • 그러나 어쨌든 우리는 자체 매개 변수를 추가해야합니다. 이것들은 일류 프레임 워크 시민처럼 취급 될수록 (사전 정의 된 것들과 동일하게 할 수 있음) 더 좋습니다.
  • 프레임 워크는 최소한 사전 정의 된 매개 변수를 기반으로 메시지를 필터링 할 수 있어야합니다. 런타임 중에 WHIM에서 필터링을 변경해야합니다.
  • 우리는 넣어야합니다 사물 이것을 통해 줄이 아닙니다. 결국에는 문자열이 해당 객체로 만들어 질 수 있지만 로그 메시지 매개 변수는 처음부터 평평한 문자열에 넣어서는 안됩니다.
  • 일부 로깅은 고객이 볼 것이므로 국제화해야 할 수도 있습니다. (우리가 문자열이 아닌 객체를 로그를 원한다는 것을 감안할 때, 이것은 너무 어렵지 않지만 더 많은 지원을할수록 더 좋을 것입니다.)
  • 파일로 필터링 한 후 남은 로그 메시지를 작성하고 해당 파일을 다시 읽을 수 있어야합니다. 프레임 워크에 스트리밍 할 수있는 기능이 있으면 직접 구현할 필요가 없습니다.
  • 각 로그 메시지는 여러 대상 (파일, 창, 원격 기계)으로 동시에 전송 될 수 있습니다.
  • 로그 메시지를 네트워크로 전송 해야하는 경우 전용 스레드에서 그렇게해야 할 수도 있습니다.
  • 물건은 C#에서 사용됩니다.

좋아, 그래서 우리는이 모든 일을 상자 밖에서 찾는 것이 불가능하다는 것을 알 수 있습니다. 이것들은 너무 많은 요구 사항이며 아마도 너무 많은 요구 사항입니다.

그러나 기초로 사용하고 우리의 물건을 구축 할 가치가 있습니까?

도움이 되었습니까?

해결책

Afaik log4net 거의 모든 것을 수행합니다. 주로 필터링을 기반으로하는 말도 수준이지만 사용할 수는 있지만 Filters 대체 기준을 사용하여 필터링하기 위해 반드시 "일류 시민"은 아닙니다.

또한, re. "파일 읽기" - 로깅 프레임 워크가 직접 지원할 것으로 기대하지 않는다고 가정합니다. 파일은 결국 파일입니다.

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