2009-12-10 1 views
0

시간이 중요한 ASMX 웹 서비스를 개발 중이며 현재 정적 메서드로 클래스를 사용하여 공유 로그 파일에 줄을 쓰고 있습니다. 응용 프로그램에서 로그를 많이 작성하기 때문에 로깅은 잠금/모니터에 의해 보호되지 않습니다. 정적 메서드에서 줄을 쓰는 동안 스레드가 예약되어 있고 다른 스레드가 또한 쓰기로 예약되어 있으면 어떻게되는지 알 수 없습니다. 이제 로깅을 구현하는 가장 좋은 방법은 무엇입니까? 다중 스레드 ASP.NET 웹 응용 프로그램 (asmx 웹 서비스)에서 로깅을 구현하는 방법

감사합니다 -

+0

이것은 사용중인 .NET 및 Windows의 버전에 따라 다릅니다. 어떤 버전을 사용하고 있습니까? –

답변

0

나는 @AdaTheDev에 동의합니다. log4net을 사용하면 고객 Appender (기록 된 메시지를 가져 와서 파일, 전자 메일, 이벤트 로그 등과 같은 일부 대상으로 배달하는 조각)를 만들 수 있습니다. 이 appender는 로그 메시지를 MSMQ에 쓸 수 있습니다.

그러면 큐 (단일 스레드)를 읽고 로그 파일에 메시지를 쓰는 작은 구성 요소를 가질 수 있습니다. 이는 메시지를 기록하기 위해 로그 메시지를 렌더링하고 큐에 기록하는 데 걸리는 시간만큼 소요된다는 것을 의미합니다. 파일에 메시지를 쓰는 작업은 단일 스레드로 수행되며 ASP.NET 측면에서 중요한 비즈니스 코드와 완전히 분리됩니다.

0

이드 log4net 같은 타사 솔루션을 사용하는 것이 좋습니다 또는 그 대신 TBH 자신을 그 일의 nlog 마티, 바퀴 우리가 선택한 구현은 Microsoft 엔터프라이즈 라이브러리를 사용하는 것입니다

0

에게 재발 저장합니다 Logging Block 그리고 나서 우리는 실제로 로그 메시지를 로그 파일에 쓰는 간단한 정적 메서드 셋업을 가진 클래스를 가진다. 멀티 스레드 환경에서이 문제를 사용하는 데 문제가 없습니다.

관련 문제