문제

현재 삐걱 거리는 기존 클라이언트/서버 응용 프로그램이 많이 있습니다. 가끔 클라이언트는 데이터의 일부에 액세스하기 위해 일부 유형의 웹 인터페이스를 추가하려고합니다. 일부는 "일반"이지만 일반적으로 사용자 정의입니다. 그러나 모든 사람은 자체 VM에 자신의 "인스턴스"가 있습니다.

내가 원하는 것은 중앙 집중식 영역으로 이러한 VM에 나오는 오류를 캡처하고 기록합니다.

새로운 데이터베이스를 작성하고 WCF 서비스를 설정하여 이러한 각 WebApps가 중앙 집중식 데이터베이스에서 로그 항목을 만들 수 있으며 로컬 EventLog에 대한 로그 항목을 만들 수 있습니다.

그게 나쁜 디자인인가요?

업데이트

WebApp은 2003/IIS6 및 2008/IIS7에 있으며 ASP.NET으로 내장되어 있습니다. 많은 인스턴스가 한 쌍의 웹 서버에 있지만 대부분은 개별 VM에 배포됩니다.

도움이 되었습니까?

해결책

이것이 바로 우리가 구현 한 방법입니다.

데이터베이스에는 3 개의 테이블이 있습니다.

Event Types
------------ 
EventType int 
EventDescription varchar(50)


MonitoredSystems
---------------
SystemID int
SystemName varchar(50)
SystemDescription text


Events
-------
RecordID bigint
EventTime datetime
SystemID int FK
EventText text
EventType int FK
Acknowledged bit

우리는 또한 이벤트를 볼 수있는 사이트를 채찍질했습니다. "인정 된"필드는 새로운 문제를 신속하게보고 읽을 때 인정할 수 있도록보기 이름을 "확인하지 못한 중요한 문제"를 설정했습니다.

우리는 우리를 위해이 작업을 수행 할 수있는 다른 도구가 있다는 것을 알고 있지만, 우리 자신의 홈 성장 버전만큼 쉽게 통합 할 수 없었으며, 이제 우리는 우리가 구축하는 모든 앱에서 사용합니다. 우리는 다른 도구가 상자에서 제공하지 않았다는 것을 언급하지 않은 다른 사용자 정의가 있습니다.

그래서 나는 당신의 아이디어가 괜찮다고 생각합니다. 직접 구축하면 원하는 방식으로 작동하도록 사용자 정의 할 수 있습니다. 그러나 최소한 log4net과 같은 도구를 검토하는 것이 좋습니다.

다른 팁

Elmah를 살펴 봐야합니다 (오류 로깅 모듈 및 핸들러) (http://code.google.com/p/elmah/) 궤도의 예외 리포터의 조합으로 (http://aspexceptionreporter.codeplex.com/release/projectreleases.aspx?releaseid=35343) 결합시 중앙 집중식 위치에서 오류보고에 대한 기업 광범위한 적용 범위를 제공 할 수 있습니다.

자주 로그인 (디버그/정보/경고)이면 RPC Invokations가 비동기 적으로 수행되어 있는지 확인하십시오.

보다 유연한 데이터 구조를 추천합니다.

Events
-------
RecordID bigint
EventTime datetime
EventLevel text 
SystemID text
EventText text
EventType text
Acknowledged bit

EventProperties
-------
RecordID bigint
key text
value text

EventProperties를 통해 로깅 응용 프로그램은 이러한 속성을 미리 정의하지 않고 유용한 정보를 기록 할 수 있습니다. SystemID에는 제약 조건이 없으므로 구성없이 시스템을 추가 할 수 있습니다.

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