Pregunta

Tengo un montón de aplicaciones cliente / servidor existentes que están actualmente chugging a lo largo. De vez en cuando, un cliente tendrá que añadir en algún tipo de interfaz web para acceder a parte de sus datos. Por lo general son de encargo, aunque algunos son "genérico"; pero cada uno tiene su propia "ejemplo" en su propia máquina virtual.

Lo que quiero es un área centralizada para capturar y registrar los errores que se presentan en cualquiera de estas máquinas virtuales.

Estoy consitering crear una nueva base de datos y la creación de un servicio WCF para que cada una de estas aplicaciones web para crear una entrada de registro en mi base de datos centralizada, así como a la EventLog local.

¿Eso es un mal diseño?

actualización

Las aplicaciones web son de 2003 / IIS6 y 2008 / IIS7, construido en ASP.NET. Muchos de los casos son un par de servidores web, pero muchos serán desplegados a máquinas virtuales individuales.

¿Fue útil?

Solución

Esto es exactamente cómo lo implementamos.

Tenemos 3 tablas en la base de datos:

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

También nos prepararon rápidamente un sitio donde podíamos ver los eventos. El campo "Reconocido" nos permite configurar una vista nombres "cuestiones fundamentales" no reconocidas por lo que podemos ver rápidamente cualquier problema nuevo, y reconocerlos como los leemos.

Sabemos que hay otras herramientas por ahí que pueden hacer esto para nosotros, pero ninguno era tan fácil de integrar como nuestra propia versión de cosecha propia, y que ahora utilizamos en todas las aplicaciones que construimos. Tenemos algunas otras personalizaciones que no estoy mencionar aquí que otras herramientas no proporcionan fuera de la caja.

Así que creo que su idea está muy bien. Si se construye a sí mismo, se puede personalizar para trabajar de la manera deseada. Sin embargo, yo recomendaría al menos mirar en herramientas como Log4net, etc.

Otros consejos

Usted debe echar un vistazo a ELMAH (módulos de registro de errores y manipuladores) ( http: // código .google.com / p / ELMAH / ) con la combinación de Orbit One del reportero de excepción ( http://aspexceptionreporter.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=35343 ) que cuando se combina le puede dar una amplia cobertura de la empresa para la notificación de errores en una ubicación centralizada.

Si se desconecta con frecuencia (debug / información / advertencia), asegúrese de que usted RPC-invokations se llevan a cabo de forma asíncrona.

Me gustaría recomendar una estructura de datos más flexible;

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

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

Los EventProperties permite la aplicación de registro para registrar cualquier información que pueda ser útil, sin tener que definir dichas propiedades antes de tiempo. Tenga en cuenta que no hay restricciones en SystemID, que permite la incorporación de sistemas sin necesidad de configuración.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top