Question

J'ai un tas d'applications existantes client / serveur qui sont actuellement cahin-caha. Une fois dans un certain temps, un client voudra ajouter un certain type de l'interface Web pour accéder à une partie de leurs données. Ceux-ci sont généralement sur mesure, bien que certains sont « génériques »; mais tout le monde a son propre « instance » dans sa propre machine virtuelle.

Ce que je veux est une zone centralisée pour capturer et enregistrer toutes les erreurs qui se présentent sur l'une de ces machines virtuelles.

Je consitering la création d'une nouvelle base de données et la mise en place d'un service WCF pour permettre à chacun de ces webapps pour créer une entrée de journal dans ma base de données centralisée, ainsi que la EventLog locale.

Est-ce une mauvaise conception?

mise à jour

Les webapps sont en 2003 / IIS6 et 2008 / IIS7, construit en ASP.NET. La plupart des cas sont une paire de serveurs web, mais beaucoup seront déployés pour machines virtuelles individuelles.

Était-ce utile?

La solution

Ceci est exactement comment nous l'avons implémenté.

Nous avons 3 tables dans la base de données:

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

Nous avons également fouetté un site où l'on pouvait voir les événements. Le « Reçue » sur le terrain nous permettent d'établir un nom de vue « des questions critiques sans accusé de réception » afin que nous puissions rapidement voir de nouveaux problèmes, et les reconnaître comme nous les lisons.

Nous savons qu'il ya d'autres outils là-bas qui peuvent le faire pour nous, mais aucun n'a été aussi facile d'intégrer notre propre version développée à la maison, et nous utilisons maintenant dans toutes les applications que nous construisons. Nous avons d'autres personnalisations que je ne suis pas de mentionner ici que d'autres outils ne fournissent pas hors de la boîte.

Je pense que votre idée est très bien. Si vous construisez vous-même, vous pouvez le personnaliser pour travailler comme vous le souhaitez. Cependant, je recommande au moins à la recherche dans des outils tels que Log4net, etc.

Autres conseils

Vous devriez jeter un oeil à ELMAH (modules de journalisation des erreurs et des gestionnaires) ( http: // Code .google.com / p / ELMAH / ) avec la combinaison de Orbit One Reporter Exception ( http://aspexceptionreporter.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=35343 ) qui, lorsqu'il est combiné peut vous donner aux entreprises une large couverture pour les rapports d'erreur dans un emplacement centralisé.

Si vous vous connectez souvent (debug / info / avertissement), assurez-vous que vous RPC-invocations sont fait de manière asynchrone.

Je recommande une structure de données plus flexible;

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

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

Les EventProperties permet à l'application de consignation pour se connecter toutes les informations qui pourraient être utiles, sans avoir à définir ces propriétés à l'avance. Notez qu'il n'y a pas de contraintes sur SystemID, qui permet l'ajout de systèmes sans configuration.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top