Pergunta

Eu tenho um monte de aplicações cliente / servidor existentes que estão actualmente chugging. De vez em quando, um cliente vai querer adicionar em algum tipo de interface web para acessar parte de seus dados. Estes são tipicamente costume, embora alguns sejam "genérico"; mas cada um tem sua própria "instância" em sua própria máquina virtual.

O que eu quero é uma área centralizada para capturar e registrar quaisquer erros que surgem em qualquer um destes VMs.

Estou consitering criação de um novo banco de dados e criação de um serviço WCF para permitir que cada um desses webapps para criar uma entrada de registo no meu banco de dados centralizado, bem como para o EventLog local.

Isso é um projeto ruim?

update

Os webapps estão no 2003 / IIS6 e 2008 / IIS7, construído em ASP.NET. Muitos dos casos são em um par de servidores web, mas muitos serão implantados para VMs individual.

Foi útil?

Solução

Este é exatamente assim que implementou.

Nós temos 3 tabelas no banco de dados:

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

Nós também chicoteado até um local onde poderíamos ver os eventos. O campo "Reconhecido" vamos configurar uma exibição nomes "questões críticas não confirmadas" para que possamos ver rapidamente quaisquer novas questões, e reconhecê-los como se lê-los.

Sabemos que há outras ferramentas lá fora, que podem fazer isso para nós, mas nenhuma foi tão fácil de integrar como a nossa própria versão cultivado em casa, e agora usá-lo em cada compilação aplicativo nós. Temos algumas outras personalizações que eu não estou mencionando aqui que outras ferramentas não fornecem fora da caixa.

Então eu acho que a sua ideia é bom. Se você construí-lo sozinho, você pode personalizá-lo para trabalhar da maneira que quiser. No entanto, eu recomendaria pelo menos olhar para ferramentas como Log4net, etc.

Outras dicas

Você deve dar uma olhada em elmah (módulos de registro de erros e manipuladores) ( http: // código .google.com / p / elmah / ) com a combinação de Repórter excepção Orbit One ( http://aspexceptionreporter.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=35343 ) que, quando combinado pode dar-lhe cobertura de toda a empresa para relatórios de erro em um local centralizado.

Se você efetuar logon com frequência (debug / info / advertência), certifique-se de RPC-invokations são feitas de forma assíncrona.

Eu recomendo uma estrutura de dados mais flexível;

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

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

Os EventProperties permite que o aplicativo de registro para registrar qualquer informação que possa ser útil, sem ter que definir essas propriedades antes do tempo. Note-se que não há restrições sobre SystemID, que permite a adição de sistemas sem configuração.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top