Comment créer une source Windows EventLog à partir de la ligne de commande?


166

Je crée une application ASP.NET qui enregistrera certaines choses dans Windows EventLog. Pour ce faire, une source d'événement doit d'abord être créée. Cela nécessite des privilèges administratifs, je ne peux donc pas le faire dans l'application ASP.NET.

Existe-t-il une application de ligne de commande fournie avec Windows qui peut créer une source de journal des événements, ou dois-je déployer la mienne?

Réponses:


298

Essayez "eventcreate.exe"

Un exemple:

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

Cela va créer un nouvel événement source de nom MYEVENTSOURCEdans l' APPLICATIONévénement journal comme INFORMATIONévénement de type .

Je pense que cet utilitaire n'est inclus qu'à partir de XP.

Lectures complémentaires


13
vous devez faire un clic droit sur "cmd" et choisir "exécuter en tant qu'administrateur" à partir de vista on
Ian Ringrose

16
eventcreate enregistre un événement sous une source existante, il ne créera pas une nouvelle source à partir de zéro comme l'OP l'a demandé.
Paul Chavez

5
@PaulChavez si la source nommée n'existe pas, elle est créée.
Farinha

1
Cela ne créera pas l'événement si le MYEVENTSOURCEexiste déjà et a été créé en utilisant autre chose que eventcreate
Chris S

2
pendant que cela fonctionnait et créait une nouvelle source, tous mes événements avaient tous "La description de l'ID d'événement 0 de la source myApp est introuvable. Soit le composant qui déclenche cet événement n'est pas installé sur votre ordinateur local, soit l'installation est corrompue" pour modifier le registre à la fin
dibs487

176

Essayez les applets de commande EventLog de PowerShell 2.0

Jeter ceci pour PowerShell 2.0 et versions ultérieures:

  • Exécutez New-EventLogune fois pour enregistrer la source de l'événement:

    New-EventLog -LogName Application -Source MyApp
    
  • Ensuite, utilisez Write-EventLogpour écrire dans le journal:

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

7
Cela fonctionne bien, n'oubliez pas d'exécuter PowerShell avec des privilèges élevés.
Rod

4
J'ai dû ouvrir et fermer l'observateur d'événements pour voir le nouveau journal que j'ai créé
amackay11

Aussi , si vous êtes activement en développement et New-EventLog-ment et Remove-EventLog« -ment-et - vient que vous pourriez rencontrer un problème quand Sourceest enregistré mais ne pas écrire spécifié Log. Le redémarrage de l' ordinateur aide à cela. Autre astuce: vous pouvez voir ce qui se passe avec vos journaux d'événements avec regedit ici:[Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\]
Corio

45

Vous pouvez également utiliser Windows PowerShell avec la commande suivante:

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

Assurez-vous de vérifier que la source n'existe pas avant d'appeler CreateEventSource, sinon elle lèvera une exception.

Pour plus d'informations:



4

Si quelqu'un est intéressé, il est également possible de créer manuellement une source d'événements en ajoutant des valeurs de registre.

Enregistrez les lignes suivantes dans un fichier .reg, puis importez-le dans le registre en double-cliquant dessus:

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

Cela crée une source d'événement nommée YOUR_EVENT_SOURCE_NAME_GOES_HERE.


1

Ou utilisez simplement la commande de ligne de commande:

Eventcreate


1

Cependant, la version cmd / batch fonctionne, vous pouvez rencontrer un problème lorsque vous souhaitez définir un eventID supérieur à 1000. Pour la création d'événements avec un eventID de 1000+, j'utiliserai PowerShell comme ceci:

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

Échantillon:

$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

vous pouvez créer votre propre événement personnalisé à l'aide de la classe de journal diagnostics.Event. Ouvrez une application Windows et cliquez sur un bouton pour exécuter le code suivant.

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

"MyNewLog" signifie le nom que vous souhaitez donner à votre journal dans l'observateur d'événements.

pour plus d'informations, consultez ce lien [ http://msdn.microsoft.com/en-in/library/49dwckkz%28v=vs.90%29.aspx]

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.