Log4Net no creará un registro de eventos personalizado en el visor de eventos

Mi aplicación WPF usa Log4Net para registrar mensajes en el visor de eventos. Esto está funcionando muy bien en la mayoría de las máquinas. Sin embargo, hay dos máquinas en mi oficina donde hay problemas. Una es una máquina física con Windows 7 con 2 GB de RAM, la otra es una máquina virtual que ejecuta XP, que también tiene 2 GB de RAM.

El problema es que aunque los usuarios hayan iniciado sesión con cuentas con derechos de administrador, el sistema no les permitirá crear el registro de eventos personalizado que configuré para mi aplicación. Esto está causando que mi programa muera.

Puedo agregar manejo de errores en todas las llamadas de registro, pero creo que no debería hacerlo. Los mensajes se registran en el controlador catch para otro error que ya ocurrió. ¿Qué voy a hacer con la información del error si no se puede registrar?

En cualquier caso, traté de crear el registro de eventos personalizado en la máquina virtual XP ayer y todavía no se creó. ¿Qué debo hacer exactamente para crear el registro de eventos personalizado en estas dos máquinas?

tony

preguntado el 12 de junio de 12 a las 21:06

¿Cómo está creando el registro de eventos en la máquina con Windows XP? ¿Mostrar algún código? -

2 Respuestas

Resulta que el problema no estaba en absoluto en el código de registro. Mi programa usa WPF para la GUI. Su secuencia de inicio hace la cantidad mínima de trabajo en el subproceso de la interfaz de usuario para que pueda mostrar la interfaz de usuario tan pronto como sea posible.

El resto de la inicialización se realiza en un hilo de fondo. Sabía que estaba ocurriendo un error, pero no pude encontrar el registro de error personalizado en la lista de registros en el Visor de eventos. Resulta que mi código no encontró algunos datos en la base de datos que necesita y estaba tratando de informar el error. Este es un proceso de 2 pasos que consiste en registrar primero el error en el registro y luego mostrar un mensaje personalizado. MessageBox diálogo. yo estaba recibiendo un XamlParseException cuando el programa intentaba mostrar este cuadro de diálogo.

Para acortar la historia, el problema que bloqueaba el programa era el XamlParseException. Esto fue tirado porque yo estaba llamando a la costumbre MessageBox's Show método en el subproceso de fondo, no en el subproceso de interfaz de usuario. Como no pude encontrar el origen del evento personalizado en el visor de eventos, no pude encontrar el error, así que asumí que el error era un problema de permisos.

Por cierto, intenté crear el registro de eventos manualmente en un punto y ayer revisé el registro y encontré la entrada para la fuente de eventos personalizada.

Aquí hay otra máquina que tiene el mismo problema. Estoy seguro de que es exactamente el mismo problema. Estoy agregando lógica al manejo de errores para asegurarme de que la costumbre MessageBox siempre se llama en el hilo de la interfaz de usuario para que el programa no bombardee así si se repite el mismo problema.

Respondido el 15 de junio de 12 a las 14:06

Necesitaríamos ver cómo intentaste crear el registro de eventos en la máquina XP...

En general, necesitas leer esto: http://msdn.microsoft.com/en-us/library/49dwckkz(v=vs.80).aspx

En particular, la nota sobre cuándo crear su registro de eventos personalizado:

"En general, cree la nueva fuente de eventos durante la instalación de su aplicación. Esto le da tiempo al sistema operativo para actualizar su lista de fuentes de eventos registradas y su configuración. Si el sistema operativo no ha actualizado su lista de fuentes de eventos y usted intenta para escribir un evento con la nueva fuente, la operación de escritura fallará. Si crear la fuente durante la instalación no es una opción, intente crear la fuente mucho antes de la primera operación de escritura, tal vez durante la inicialización de su aplicación. Si elige esto enfoque, asegúrese de que su código de inicialización se esté ejecutando con derechos de administrador en la computadora. Estos derechos son necesarios para crear nuevas fuentes de eventos".

Intente crear el registro personalizado antes del primer evento de registro para usarlo.

Respondido el 14 de junio de 12 a las 20:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.