2011-10-31 73 views
8

Cuando uso el siguiente código para escribir en el registro de sucesos de aplicación, todo funciona bien:Escribir en el registro de eventos C# - ¿Necesito usar EventLog.CreateEventSource al escribir en el registro de la aplicación?

EventLog log = new EventLog(); 
log.Source = "Application"; 
log.WriteEntry("test message", EventLogEntryType.Error); 

Cuando utilizo el código que es de MSDN y todos los otros blogs, me sale el error de seguridad (estoy adivinando porque CreateEventSource lo plantea).

string sSource = "MyWebService"; 
string sLog = "myApplication"; 
string sMsg = errorMessage; 

if (!EventLog.SourceExists(sSource)) 
    EventLog.CreateEventSource(sSource, sLog); 

EventLog.WriteEntry(sSource, sMsg, EventLogEntryType.Error); 

Por lo tanto, necesito para comprobar si existe o no la fuente, si todo lo que necesito es escribir en registro de la aplicación que está ahí por defecto?

¿Cuál es la forma correcta de escribir en EventViewer?

Respuesta

7

El método CreateEventSource crea una nueva fuente en el registro de eventos, esto le permite escribir el registro de su aplicación en el grupo propio de la aplicación en lugar de escribir en el grupo genérico Application.

Quizás aparezca un error porque el usuario que está utilizando para crear el origen del evento no tiene permiso para crearlo, intente ejecutar el programa como administrador si tiene el sistema operativo Vista/7.

La forma correcta de iniciar sesión en el visor de eventos depende de sus necesidades, si la aplicación genera mucho mensaje de registro y desea agrupar este registro en un contenedor específico de la aplicación, tal vez sea mejor crear un registro específico de la aplicación fuente de evento y escriba el registro; en su lugar, si la aplicación genera pocos mensajes de registro y no hay necesidad de agruparlos, puede usar el genérico Application origen de evento de registro ...

+1

genial, gracias! Solo necesitaba confirmarlo. No necesito crear una fuente/registro por separado. De hecho, quiero escribir en el registro de la aplicación. – sarsnake

+2

una pregunta más: cuando escribo en el origen de la Aplicación genérica, aparece el siguiente mensaje cuando lo veo en el visor de eventos: "La descripción del Evento (0) es Fuente (Aplicación) no se puede encontrar. La computadora local puede no tener la información de registro necesaria o los archivos DLL de mensajes para mostrar los mensajes de una computadora remota "... luego se muestra mi mensaje personalizado. Me preguntaba si es posible no mostrar este largo mensaje predeterminado sin configurar la fuente. – sarsnake

+0

Es porque su computadora de monitoreo no tiene referencias a los mensajes de error, exporta el registro de eventos de la máquina remota al archivo CSV basado en texto y obtienes toda la información de una máquina remota (incluyendo errores de todas las aplicaciones que otras personas han instalado). – user3800527

2

le sugiero que trate de log4net, en caso de que desee escribir en diferentes fuentes, así (SMTP, archivo, etc.)

http://logging.apache.org/log4net/release/config-examples.html#eventlogappender

Para aplicaciones web:

Uso general:

solución similar para el servicio Windows Forms/ventanas.

+2

Gracias, pero esto no responde la pregunta. – sarsnake

-1

No es necesario que cree una fuente de evento. Puede ser una gran ventaja cuando se generan eventos que son independientes del idioma o que tienen sustituciones, pero es opcional, al menos para los programas .NET (el BCL proporciona un origen de evento predeterminado).

+0

aparece el error "La propiedad de origen no se configuró antes de escribir en el registro de eventos" cuando Log está vacío, entonces no, no es opcional. –

2

Debe tener derechos de administrador para crear un origen de eventos. En el primero, no está utilizando una fuente personalizada.

1

Un WriteEntry directo irá al origen de la aplicación predeterminada. SourceExists y CreateEventSource es si desea crear su propia fuente personalizada que sea más fácil de localizar cualquier entrada de registro en el Visor de eventos.

Y sí, necesita tener los derechos para crear un origen de evento de cliente como han mencionado otros.

0

Necesita derechos de administrador para ejecutar su aplicación.

O se puede ejecutar la aplicación por Al entrar en la carpeta de depuración de la aplicación y haga clic derecho en el archivo .exe y ejecutar como administrador

o

se ejecuta Visual Studio como administrador

Cuestiones relacionadas