Frage

Ich habe eine Reihe von vorhandenen Client / Server-Anwendungen, die derzeit entlang tuckern. Einmal in einer Weile wird ein Kunde möchte auf irgendeine Art von Web-Interface hinzuzufügen, einen Teil ihrer Daten zuzugreifen. Diese sind in der Regel individuelle, obwohl einige „generic“; aber jeder hat seine eigene „Instanz“ in seiner eigenen VM.

Was ich will, ist ein zentrales Gebiet, um Fehler zu erfassen und zu protokollieren, die auf jedem dieses VMs kommen.

Ich bin consitering Erstellen eine neue Datenbank und einen WCF-Dienst einrichten jede dieser Webapps zu ermöglichen, sowie auf dem lokalen EventLog einen Protokolleintrag in meiner zentralen Datenbank zu erstellen.

Ist das ein schlechtes Design?

Update

Die Webapps sind auf 2003 / IIS6 und 2008 / IIS7, in ASP.NET gebaut. Viele der Fälle sind auf einem Paar von Web-Servern, aber viele werden auf einzelne VMs eingesetzt werden.

War es hilfreich?

Lösung

Das ist genau, wie wir es umgesetzt werden.

Wir haben drei Tabellen in der Datenbank:

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

Wir peitschte auch ein Ort, an dem wir die Ereignisse sehen können. Die „Quittiert“ Feld lassen Sie uns einen Blick Namen „Nicht bestätigt kritische Fragen“ so einrichten, dass wir schnell keine neuen Probleme sehen können, und erkennen sie, wie wir sie lesen.

Wir wissen, es gibt auch andere Tools gibt, die dies für uns tun kann, aber keiner war so einfach wie unsere eigene home grown-Version zu integrieren, und wir haben es jetzt in jedem App verwenden wir bauen. Wir haben einige andere Anpassungen, die ich hier nicht erwähne, dass andere Werkzeuge nicht aus der Box vorsah.

Also ich denke, Ihre Idee ist in Ordnung. Wenn Sie es selbst bauen, können Sie es anpassen, um die Art und Weise zu arbeiten, die Sie wollen. Allerdings würde ich zumindest einen Blick in Tools wie Log4net empfehlen, etc.

Andere Tipps

Sie sollten einen Blick auf ELMAH (Fehlerprotokollierung Module und Handler) nehmen ( http: // Code .google.com / p / Elmah / ) mit der Kombination von Orbit One Ausnahmeberichter ( http://aspexceptionreporter.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=35343 ), die, wenn in Kombination können Sie die unternehmensweite Abdeckung für die Fehlerberichterstattung in einem zentralen Standort geben.

Wenn Sie häufig (Debug / info / Warnung) einzuloggen, stellen Sie sicher, dass Sie RPC-invokations asynchron ausgeführt werden.

würde ich eine flexiblere Datenstruktur empfehlen;

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

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

Die EventProperties erlaubt die Protokollierung Anwendung keine Informationen zu protokollieren, die nützlich sein könnten, ohne dass diese Eigenschaften vor der Zeit definieren zu müssen. Beachten Sie, dass es keine Einschränkungen für SystemID, die den Zusatz von Systemen ohne Konfiguration ermöglicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top