2012-12-06 1 views
1

그래서 로깅 목적으로 Common.Logging.Log4Net를 사용하고 있지만, 코드가 멀티 스레드이기 때문에, 종종 메시지는 예를 들어, 혼동 :그룹화 된 모든 메시지를 기록 Common.Logging.Log4Net를 사용하는 방법

메시지에서 스레드 1이를 방지하기 위해 스레드 2

에서 스레드 1 메시지에서 실 1 메시지에서 실 2 메시지에서 메시지는, 우리는 함께 모든 메시지를 얻으려고 노력하고 우리는 모두 실행 완료를 인쇄 할 수 있습니다. 이를 위해 우리는 기본적으로 작업 대리자의 목록을 각 로그 라인 등이 포함되어 있기 때문에,

  Log.DebugFormat("Handling..."); 

을하지만 우리가 로그에 쓸 때, 메시지는 여전히 혼합 얻을 수 있기 때문에이 불행하게도, 어떤 문제가 해결되지 않습니다 우리가하는 일은 목록에있는 foreach이며 대리인을 실행하는 것입니다. 한 번에 모든 메시지를 작성하는 방법이 있습니까?

답변

1

일종의 트랜잭션 로깅을 찾고있는 것처럼 들립니다. 기본적으로 응용 프로그램 로깅은 순차적입니다.

내가 오프 손 생각할 수있는 옵션을 몇 :

  • 스레드 ID를 로그인합니다. 결과를 검토 할 때보다 적절한 로그 분석기를 사용하십시오. CSV 또는 기타 일반 형식을 사용하는 경우 Excel은 정상적으로 작동합니다. 특정 스레드의 동작에 관심이있을 때 스레드 ID를 필터링하십시오. 나는이 길을 먼저 시도 할 것이다.
  • 각 스레드를 별도의 파일에 기록하십시오. 나는 마이크로 소프트가 때때로 이것을하는 것을 보았다. 괜찮아 질지도 몰라. 어떻게 든 각 파일을 고유하게 식별해야합니다. Log4net이이를 처리 할 수 ​​있다고 추측합니다.
관련 문제