¿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?

Vilx-
fuente

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

MSV Muthu
fuente
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
    
roufamatic
fuente
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:

Luis Rocha
fuente
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.

CSharper
fuente
1

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

Eventcreate


fuente
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)
R. Tettero
fuente
-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]

3333
fuente