Como criar a fonte Windows EventLog a partir da linha de comando?

166

Estou criando um aplicativo ASP.NET que registrará algumas coisas no Windows EventLog. Para fazer isso, uma fonte de eventos deve ser criada primeiro. Isso requer privilégios administrativos, portanto não posso fazer isso no aplicativo ASP.NET.

Existe um aplicativo de linha de comando existente fornecido com o Windows que pode criar uma fonte de log de eventos ou devo implementar o meu?

Vilx-
fonte

Respostas:

298

Experimente "eventcreate.exe"

Um exemplo:

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

Isto irá criar um novo evento fonte nomeado MYEVENTSOURCEsob APPLICATIONevento log de INFORMATIONeventos tipo .

Eu acho que esse utilitário está incluído apenas no XP em diante.

Leitura adicional

MSV Muthu
fonte
13
você tem que clicar com o botão direito do mouse em "cmd" e escolher "executar como administrador" no vista em
Ian Ringrose
16
eventcreate registra um evento em uma fonte existente, ele não criará uma nova fonte do zero, conforme solicitado pelo OP.
Paul Chavez
5
@PaulChavez se a fonte nomeada não existir, ela será criada.
Farinha
1
Isso não vai criar o evento se o MYEVENTSOURCEjá existe e foi criado usando algo diferente de eventcreate
Chris S
2
enquanto isso funcionava e criava uma nova fonte, todos os meus eventos tinham "Não foi possível encontrar a descrição do ID do evento 0 da fonte myApp. O componente que gera esse evento não está instalado no computador local ou a instalação está corrompida", por isso editar o registro no final
dibs487 11/03/16
176

Experimente os cmdlets EventLog do PowerShell 2.0

Lançando isso para o PowerShell 2.0 e para cima:

  • Execute New-EventLoguma vez para registrar a fonte do evento:

    New-EventLog -LogName Application -Source MyApp
    
  • Em seguida, use Write-EventLogpara escrever no log:

    Write-EventLog 
        -LogName Application 
        -Source MyApp 
        -EntryType Error 
        -Message "Immunity to iocaine powder not detected, dying now" 
        -EventId 1
    
roufamatic
fonte
7
Isso funciona bem, lembre-se de executar o PowerShell com privilégios elevados.
Rod
4
Eu tive que visualizador de eventos abrem e fecham para ver o novo registro que eu criei
amackay11
Além disso, se você estiver desenvolvendo ativamente e New-EventLog-ing e Remove-EventLog'-ing e para trás e para trás, poderá encontrar um problema quando Sourceestiver registrado, mas não gravar no especificado Log. Reiniciar o computador ajuda com isso. Outra dica: você pode ver o que está acontecendo com os logs de eventos com o regedit aqui:[Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\]
Corio
45

Você também pode usar o Windows PowerShell com o seguinte comando:

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

Certifique-se de verificar se a fonte não existe antes de chamar CreateEventSource, caso contrário, lançará uma exceção.

Para mais informações:

Luis Rocha
fonte
12

eventcreate2 permite criar logs personalizados, onde eventcreate não.

Nick Bolton
fonte
4

Se alguém estiver interessado, também é possível criar uma fonte de eventos manualmente adicionando alguns valores do registro.

Salve as seguintes linhas como um arquivo .reg e importe-o para o registro clicando duas vezes nele:

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

Isso cria uma fonte de eventos denominada YOUR_EVENT_SOURCE_NAME_GOES_HERE.

CSharper
fonte
1

Ou apenas use o comando da linha de comando:

Eventcreate


fonte
1

No entanto, a versão cmd / batch funciona. Você pode encontrar um problema quando desejar definir um eventID maior que 1000. Para a criação de eventos com um eventID igual a 1000, usarei o PowerShell como este:

$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) 

Amostra:

$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
fonte
-3

você pode criar seu próprio evento personalizado usando diagnostics.Event classe de log. Abra um aplicativo do Windows e, em um botão, clique no código a seguir.

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

"MyNewLog" significa o nome que você deseja atribuir ao seu logon no visualizador de eventos.

para obter mais informações, consulte este link [ http://msdn.microsoft.com/en-in/library/49dwckkz%28v=vs.90%29.aspx]

3333
fonte