コマンドラインからWindows EventLogソースを作成する方法


166

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

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

回答:


298

「eventcreate.exe」を試す

例:

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

これにより、イベントログとしてイベントタイプとして名前が付けられた新しいイベントソースが作成さMYEVENTSOURCEますAPPLICATIONINFORMATION

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

参考文献


13
「cmd」を右クリックして、ビスタから「管理者として実行」を選択する必要があります
Ian Ringrose

16
eventcreateは、既存のソースの下にイベントを記録します。OPが要求したように、新しいソースを最初から作成しません。
ポールチャベス

5
@PaulChavez指定されたソースが存在しない場合は作成されます。
Farinha 2013年

1
MYEVENTSOURCEすでに存在し、eventcreate以外を使用して作成された場合、これはイベントを作成しません
Chris S

2
これが機能して新しいソースを作成している間、すべてのイベントに「ソースmyAppからのイベントID 0の説明が見つかりません。このイベントを発生させるコンポーネントがローカルコンピューターにインストールされていないか、インストールが破損しています」ので、最後にレジストリを編集する
dibs487

176

PowerShell 2.0のEventLogコマンドレットを試す

これをPowerShell 2.0以降に投入します。

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

    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
    

7
これは正常に機能します。PowerShellを昇格した特権で実行することを忘れないでください。
ロッド

4
私は私が作成した新しいログを参照するには、イベントビューアを開閉しなければならなかった
amackay11

また、積極的に開発およびNew-EventLog-ingおよびRemove-EventLog-ingを行っている場合Source、登録時に問題が発生する可能性がありますが、指定されLogたものに書き込みません。コンピュータを再起動することはそれを助けます。別のヒント:regeditを使用して、イベントログで何が行われているかを確認できます:[Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\]
Corio

44

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

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

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

詳細については:



4

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

次の行を.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ます。


1

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

イベントクリエイト


1

ただし、cmd / batchバージョンは機能し、1000より大きいeventIDを定義するときに問題が発生する可能性があります。eventIDが1000以上のイベントを作成するには、次のようにpowershellを使用します。

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

-3

diagnostics.Eventログクラスを使用して、独自のカスタムイベントを作成できます。Windowsアプリケーションを開き、ボタンをクリックして次のコードを実行します。

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

「MyNewLog」は、イベントビューアのログに付ける名前を意味します。

詳細については、このリンクを確認してください[ http://msdn.microsoft.com/en-in/library/49dwckkz%28v=vs.90%29.aspx]

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.