2013-09-24 3 views
0

로깅 문제가 있습니다.통합 로깅을 얻는 가장 좋은 방법은 무엇입니까?

asp.net 웹 사이트가 있습니다. 웹 사이트의 주요 기능은 이메일 목록입니다 (db에 저장 됨). 오류가 발생할 때마다 데이터가 nlog에 의해 파일에 저장됩니다. 이 웹 사이트에는 관리자 패널이 있습니다. 관리자 패널 목록은 웹 사이트의 오류 로그를 읽습니다.

근로자가 있습니다. 작업자는 Exchange Server에 연결하고 일치하는 제목이있는 전자 메일이 있는지 확인합니다. 패턴과 일치하는 전자 메일은 db에 저장됩니다. 오류가 발생할 때마다 데이터가 nlog에 의해 다른 파일에 저장됩니다.

웹 사이트와 작업자 모두 동일한 로거 클래스를 사용합니다. 웹 사이트의 web.config 및 작업자의 application.config의 설정은 다른 대상 파일을 가리 킵니다.

다음은 새로운 기능입니다. 관리자 패널은 작업자의 오류도 나열해야합니다. 자, 나는 그것에 대해 갈 여러 가지 방법이 있습니다.

옵션 1 : 웹 사이트는 작업자 로그 파일의 위치를 ​​파악한 다음 작업자 로그 파일을 읽습니다.

옵션 2 : 새로운 근로자/당사자를 만듭니다. 이것은 웹 사이트와 작업자 모두에 대한 로깅을 처리합니다. 단일 로그에 두 세트의 오류를 저장할 수도 있고 데이터베이스의 새 테이블을 저장할 수도 있습니다.

옵션 3 : 하늘색 파일 시스템의 디렉토리 구조를 모르지만 웹 사이트와 작업자 파일이 동일한 대상 파일을 가리 키도록 구성하십시오.

그것에 대해 가장 깨끗한 방법은 무엇입니까?

답변

1

Windows Azure Diagnostics의 사용자 지정 로그 기능을 사용하면됩니다. NLog를 사용하여 웹 역할과 작업자 역할을 다른 대상 또는 동일한 대상에 쓰게하십시오. 이러한 파일은 각 VM의 로컬 저장소에 저장됩니다. 그런 다음 Windows Azure Diagnostics를 사용하여 이러한 파일을 주기적으로 Windows Azure Blob 저장소로 전송하고 세 번째 작업자 역할로 이러한 BLOB를 주기적으로 처리하게합니다.

Cloud Service Fundamentals 프로젝트를 보시려면 여기를 클릭하십시오 : http://code.msdn.microsoft.com/windowsazure/Cloud-Service-Fundamentals-4ca72649. 그것은 Windows Azure CAT 팀의 것입니다. 로깅 데이터를 수집 한 다음 해당 로깅 데이터를 telemetry-logs라는 컨테이너에 보존하기 위해 NLog를 사용합니다. 데이터가 해당 컨테이너에 있으면 주기적으로 데이터를 폴링하여 SQL Azure 데이터베이스로 푸시합니다.

+0

우리는 예산이 부족합니다. 이로 인해 추가 요금이 발생합니까? – user513788

+0

이 데이터를 BLOB 저장 장치 및 저장 장치로 전송하는 데는 요금이 부과되지만 중요하지는 않습니다. 로그 데이터를 처리하는 데 대한 세 번째 작업자 역할에 대한 다른 비용이 있지만 솔루션에 이미있는 작업자 역할로이 작업을 수행 할 수 있습니다. –

1

로컬 파일 대신 데이터베이스에 nlog 항목을 보냅니다.
https://github.com/nlog/NLog/wiki/Database-target
항목이 너무 많으면 데이터베이스에 FATAL 또는 ERROR를 보냅니다.

+0

그래,하지만 NLog와 데이터베이스간에 일시적인 연결 문제가 발생하면 문제는 발견되었지만 행운을 해결할 수 없다면 어떻게 될까요? http://stackoverflow.com/questions/37588791/is-there -a-way-to-have-nlog-handle-retries-when-writing-to-a-database-specifica – SteveC

관련 문제