いくつかのものをWindows EventLogに記録するASP.NETアプリケーションを作成しています。これを行うには、最初にイベントソースを作成する必要があります。これには管理者権限が必要なので、ASP.NETアプリではできません。
イベントログソースを作成できるWindowsにバンドルされている既存のコマンドラインアプリケーションはありますか、それとも自分でロールアウトする必要がありますか?
例:
eventcreate /ID 1 /L APPLICATION /T INFORMATION /SO MYEVENTSOURCE /D "My first log"
これにより、MYEVENTSOURCE
という名前のAPPLICATION
という名前の新しいイベントsourceeventlogが作成されますINFORMATION
eventtype。
このユーティリティはXP以降からのみ含まれていると思います。
Windows IT Pro: JSIヒント5487。WindowsXPには、カスタムイベントを作成するためのEventCreateユーティリティが含まれています。
CMDプロンプトで eventcreate /?
と入力します
Microsoft TechNet:Windowsコマンドラインリファレンス: Eventcreate
SS64:Windowsコマンドラインリファレンス: Eventcreate
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
次のコマンドでWindows PowerShellを使用することもできます。
if ([System.Diagnostics.EventLog]::SourceExists($source) -eq $false) {
[System.Diagnostics.EventLog]::CreateEventSource($source, "Application")
}
CreateEventSourceを呼び出す前に、ソースが存在しないことを確認してください。存在しない場合は、例外がスローされます。
詳細情報:
eventcreate2では、eventcreateではできませんが、カスタムログを作成できます。
誰かが興味がある場合は、いくつかのレジストリ値を追加して、イベントソースを手動で作成することもできます。
次の行を.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
という名前のイベントソースが作成されます。
または、コマンドラインコマンドを使用します。
イベント作成
ただし、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)