如何从命令行创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实用程序。

  • inputeventcreate /? 在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