如何从命令行创buildWindows事件日志源?
我正在创build一个ASP.NET应用程序,将logging一些东西到Windows事件日志。 为此,必须首先创build事件源。 这需要pipe理权限,所以我不能在ASP.NET应用程序中执行此操作。
是否有与Windows捆绑的现有命令行应用程序可以创build事件日志源,还是必须推出自己的?
尝试“eventcreate.exe”
一个例子:
eventcreate /ID 1 /L APPLICATION /T INFORMATION /SO MYEVENTSOURCE /D "My first log"
这将在APPLICATION
事件日志下以INFORMATION
事件types创build一个名为MYEVENTSOURCE
的新事件源 。
我认为这个实用程序只包含在XP之后。
进一步阅读
-
Windows IT专业版: JSI提示5487. Windows XP包含用于创build自定义事件的EventCreate实用程序。
-
input
eventcreate /?
在CMD提示符下 -
Microsoft TechNet:Windows命令行参考: Eventcreate
-
SS64:Windows命令行参考: Eventcreate
尝试使用PowerShell 2.0的EventLog cmdlet
抛出这个为PowerShell 2.0和以上:
-
运行
New-EventLog
一次以注册事件源: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之前,请确保检查源不存在,否则会抛出exception。
欲了解更多信息:
eventcreate2允许您创build自定义日志,其中eventcreate不会。
或者只使用命令行命令:
Eventcreate
如果有人感兴趣,也可以通过添加一些registry值来手动创build事件源。
将以下行保存为.reg文件,然后通过双击将其导入registry:
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
这将创build一个名为YOUR_EVENT_SOURCE_NAME_GOES_HERE
的事件源。
然而,CMD /批处理版本的作品,你可以遇到一个问题,当你想定义一个事件ID高于1000.事件创buildeventID为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)
您可以使用diagnostics.Event日志类创build自己的自定义事件。 打开一个Windows应用程序,并在一个button上单击执行以下代码。
System.Diagnostics.EventLog.CreateEventSource("ApplicationName", "MyNewLog");
“MyNewLog”是指您想要在日志事件查看器中input的名称。
有关更多信息,请查看此链接[ http://msdn.microsoft.com/en-in/library/49dwckkz%28v=vs.90%29.aspx%5D