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


166

Estoy creando una aplicación ASP.NET que registrará algunas cosas en Windows EventLog. Para hacer esto, primero se debe crear una fuente de eventos. 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 que se incluye con Windows que pueda crear una fuente de registro de eventos, o debo implementar la mía?

Respuestas:


298

Prueba con "eventcreate.exe"

Un ejemplo:

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

Esto creará un nuevo origen de eventos denominado MYEVENTSOURCEen el registro deAPPLICATION eventos comoINFORMATION caso tipo .

Creo que esta utilidad se incluye solo desde XP en adelante.

Otras lecturas


13
tienes que hacer clic derecho en "cmd" y elegir "ejecutar como administrador" de vista en
Ian Ringrose

16
eventcreate registra un evento en una fuente existente, no creará una nueva fuente desde cero como lo solicitó el OP.
Paul Chavez

55
@PaulChavez si la fuente nombrada no existe, se crea.
Farinha

1
Esto no creará el evento si MYEVENTSOURCEya existe y fue creado usando algo diferente a eventcreate
Chris S

2
mientras esto funcionaba y creaba una nueva fuente, todos mis eventos tenían "La descripción para el ID de evento 0 de la fuente myApp no ​​se puede encontrar. O el componente que genera este evento no está instalado en su computadora local o la instalación está dañada", así que tuve editar el registro al final
dibs487

176

Pruebe los cmdlets EventLog de PowerShell 2.0

Lanzando esto para PowerShell 2.0 y hacia arriba:

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

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

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

77
Esto funciona bien, solo recuerde ejecutar PowerShell con privilegios elevados.
Rod

44
Tuve que abrir y cerrar el visor de eventos para ver el nuevo registro que creé
amackay11

Además, si está desarrollando activamente y New-EventLoghaciendo Remove-EventLog"ting" de ida y vuelta, puede encontrar un problema cuando Sourceestá registrado pero no escribe en especificado Log. Reiniciar la computadora ayuda con eso. Otro consejo: puede ver lo que está sucediendo con sus registros de eventos con regedit aquí:[Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\]
Corio

45

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 el origen no exista antes de llamar a CreateEventSource, de lo contrario arrojará una excepción.

Para más información:



4

Si alguien está interesado, también es posible crear un origen de eventos 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 un origen de eventos llamado YOUR_EVENT_SOURCE_NAME_GOES_HERE.


1

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

Eventcreate


1

Sin embargo, la versión cmd / batch funciona; puede encontrarse con un problema cuando desee definir un ID de evento que sea superior a 1000. Para la creación de eventos con un ID de evento 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)

-3

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

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

"MyNewLog" significa el nombre que desea darle a su visor de eventos de inicio de sesión.

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.