Domanda

Ho un sacco di applicazioni client / server esistenti che sono attualmente chugging lungo. Una volta ogni tanto, un cliente vorrà aggiungere su un certo tipo di interfaccia web per accedere parte dei loro dati. Questi sono in genere su misura, anche se alcuni sono "generici"; ma ognuno ha la propria "istanza" nella propria VM.

Quello che voglio è un'area centralizzata per catturare e registrare tutti gli errori che si presentano su uno di questi macchine virtuali.

Sono consitering la creazione di un nuovo database e la creazione di un servizio WCF per consentire a ciascuna di queste webapps per creare una voce di registro nel mio database centralizzato, nonché al EventLog locale.

è che un cattivo design?

Aggiorna

I webapps sono 2003 / IIS6 e 2008 / IIS7, costruita in ASP.NET. Molti dei casi sono un paio di server web, ma molti saranno schierati a singole VM.

È stato utile?

Soluzione

Questo è esattamente come abbiamo implementato esso.

Abbiamo 3 tabelle del database:

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

Abbiamo anche montata su un sito dove abbiamo potuto visualizzare gli eventi. Il campo "Riconosciuta" fateci impostare una visualizzazione nomi "problemi critici non riconosciuti" in modo da poter vedere rapidamente eventuali nuovi problemi, e riconoscere loro come noi li leggiamo.

Sappiamo che ci sono altri strumenti là fuori che può fare questo per noi, ma nessuno era così facile da integrare come la nostra casa cresciuta versione, e noi ora usiamo in tutte le app che costruiamo. Abbiamo alcune altre personalizzazioni che non sto ricordare qui che altri strumenti non hanno fornito fuori dalla scatola.

Quindi penso che la tua idea è bene. Se si costruisce da soli, è possibile personalizzare per lavorare nel modo desiderato. Tuttavia, mi sento di raccomandare almeno esaminando strumenti come Log4net, ecc.

Altri suggerimenti

Si dovrebbe dare un'occhiata a ELMAH (moduli di registrazione errore e gestori) ( http: // codice .google.com / p / ELMAH / ) con la combinazione di Orbit One Exception Reporter ( http://aspexceptionreporter.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=35343 ) che, combinato può dare un'ampia copertura aziendale per la segnalazione di errori in una posizione centralizzata.

Se si accede di frequente (debug / informazioni / allarme), assicurarsi che si RPC-invocazioni sono fatto in modo asincrono.

Mi consiglia una struttura dati più flessibile;

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

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

I EventProperties consente all'applicazione di registrazione per registrare tutte le informazioni che potrebbero essere utili, senza dover definire tali proprietà prima del tempo. Si noti che non ci sono vincoli di SystemID, che consente l'aggiunta di sistemi senza configurazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top