web-dev-qa-db-ja.com

コマンドラインからWindows EventLogソースを作成するには?

いくつかのものをWindows EventLogに記録するASP.NETアプリケーションを作成しています。これを行うには、最初にイベントソースを作成する必要があります。これには管理者権限が必要なので、ASP.NETアプリではできません。

イベントログソースを作成できるWindowsにバンドルされている既存のコマンドラインアプリケーションはありますか、それとも自分でロールアウトする必要がありますか?

158
Vilx-

「eventcreate.exe」をお試しください

例:

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

これにより、MYEVENTSOURCEという名前のAPPLICATIONという名前の新しいイベントsourceeventlogが作成されますINFORMATION eventtype

このユーティリティはXP以降からのみ含まれていると思います。

参考文献

287
MSV Muthu

PowerShell 2.0のEventLogコマンドレットをお試しください

PowerShell 2.0以降ではこれをスローします。

  • New-EventLog を1回実行して、イベントソースを登録します。

    New-EventLog -LogName Application -Source MyApp
    
  • 次に、 Write-EventLog を使用してログに書き込みます。

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

次のコマンドでWindows PowerShellを使用することもできます。

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

CreateEventSourceを呼び出す前に、ソースが存在しないことを確認してください。存在しない場合は、例外がスローされます。

詳細情報:

42
Luis Rocha

eventcreate2では、eventcreateではできませんが、カスタムログを作成できます。

11
Nick Bolton

誰かが興味がある場合は、いくつかのレジストリ値を追加して、イベントソースを手動で作成することもできます。

次の行を.regファイルとして保存し、ダブルクリックしてレジストリにインポートします。

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

これにより、YOUR_EVENT_SOURCE_NAME_GOES_HEREという名前のイベントソースが作成されます。

4
CSharper

または、コマンドラインコマンドを使用します。

イベント作成

1
user111179

ただし、cmd/batchバージョンは機能します。1000よりも大きいeventIDを定義する場合、問題が発生する可能性があります。

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

サンプル:

$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)
1
R. Tettero