¿Cómo crear una fuente Windows EventLog desde la línea de comandos?

Estoy creando una aplicación ASP.NET que registrará algunas cosas en Windows EventLog. Para hacer esto, primero se debe crear una fuente de evento. Esto requiere privilegios administrativos, por lo que no puedo hacerlo en la aplicación ASP.NET.

¿Existe una aplicación de línea de comandos integrada con Windows que pueda crear un origen de registro de eventos o debo implementar la mía?

Pruebe “eventcreate.exe”

Un ejemplo:

eventcreate /ID 1 /L APPLICATION /T INFORMATION /SO MYEVENTSOURCE /D "My first log" 

Esto creará un nuevo origen de evento llamado MYEVENTSOURCE en el registro de eventos APPLICATION como tipo de evento INFORMATION .

Creo que esta utilidad se incluye solo a partir de XP.

Otras lecturas

  • Windows IT Pro: JSI Tip 5487. Windows XP incluye la utilidad EventCreate para crear eventos personalizados.

  • Escriba eventcreate /? en CMD prompt

  • Microsoft TechNet: Referencia de línea de comandos de Windows: Eventcreate

  • SS64: Referencia de línea de comandos de Windows: EventCreate

Pruebe los cmdlets EventLog de PowerShell 2.0

Lanzando esto para PowerShell 2.0 y en adelante:

  • Ejecute New-EventLog una vez para registrar el origen del evento:

     New-EventLog -LogName Application -Source MyApp 
  • Luego use Write-EventLog para escribir en el registro:

     Write-EventLog -LogName Application -Source MyApp -EntryType Error -Message "Immunity to iocaine powder not detected, dying now" -EventId 1 

También puede usar Windows PowerShell con el siguiente comando:

 if ([System.Diagnostics.EventLog]::SourceExists($source) -eq $false) { [System.Diagnostics.EventLog]::CreateEventSource($source, "Application") } 

Asegúrese de verificar que la fuente no existe antes de llamar a CreateEventSource, de lo contrario generará una excepción.

Para más información:

eventcreate2 le permite crear registros personalizados, donde eventcreate no lo hace.

O simplemente use el comando de línea de comando:

Eventcreate

Si alguien está interesado, también es posible crear un origen de evento manualmente agregando algunos valores de registro.

Guarde las siguientes líneas como un archivo .reg, luego impórtelo al registro haciendo doble clic en él:

 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\YOUR_EVENT_SOURCE_NAME_GOES_HERE] "EventMessageFile"="C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\EventLogMessages.dll" "TypesSupported"=dword:00000007 

Esto crea una fuente de evento llamada YOUR_EVENT_SOURCE_NAME_GOES_HERE .

Sin embargo, la versión de cmd / batch funciona, puede encontrarse con un problema cuando se quiere definir un eventID que sea más alto que 1000. Para la creación de eventos con un eventID de 1000+, usaré powershell de esta manera:

 $evt=new-object System.Diagnostics.Eventlog(“Define Logbook”) $evt.Source=”Define Source” $evtNumber=Define Eventnumber $evtDescription=”Define description” $infoevent=[System.Diagnostics.EventLogEntryType]::Define error level $evt.WriteEntry($evtDescription,$infoevent,$evtNumber) 

Muestra:

 $evt=new-object System.Diagnostics.Eventlog(“System”) $evt.Source=”Tcpip” $evtNumber=4227 $evtDescription=”This is a Test Event” $infoevent=[System.Diagnostics.EventLogEntryType]::Warning $evt.WriteEntry($evtDescription,$infoevent,$evtNumber) 

puede crear su propio evento personalizado mediante el uso de diagnósticos. Clase de registro de eventos. Abra una aplicación de Windows y haga clic en un botón para hacer el siguiente código.

 System.Diagnostics.EventLog.CreateEventSource("ApplicationName", "MyNewLog"); 

“MyNewLog” significa el nombre que desea darle a su log en el visor de eventos.

para obtener más información, consulte este enlace [ http://msdn.microsoft.com/en-in/library/49dwckkz%28v=vs.90%29.aspx%5D