我正在创建一个 ASP.NET 应用程序,它将一些内容记录到 Windows EventLog 中。为此,必须首先创建事件源。这需要管理权限,因此我无法在 ASP.NET 应用程序中执行此操作。
是否有与 Windows 捆绑在一起的现有命令行应用程序可以创建事件日志源,还是我必须推出自己的?
我正在创建一个 ASP.NET 应用程序,它将一些内容记录到 Windows EventLog 中。为此,必须首先创建事件源。这需要管理权限,因此我无法在 ASP.NET 应用程序中执行此操作。
是否有与 Windows 捆绑在一起的现有命令行应用程序可以创建事件日志源,还是我必须推出自己的?
一个例子:
eventcreate /ID 1 /L APPLICATION /T INFORMATION /SO MYEVENTSOURCE /D "My first log"
这将在event log下创建一个名为event type的新事件源。MYEVENTSOURCE
APPLICATION
INFORMATION
我认为这个实用程序仅从 XP 开始包含。
Windows IT Pro:JSI 技巧 5487。Windows XP 包括用于创建自定义事件的 EventCreate 实用程序。
输入eventcreate /?
CMD 提示符
Microsoft TechNet:Windows 命令行参考:Eventcreate
SS64:Windows 命令行参考:Eventcreate
将其用于 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 之前一定要检查源不存在,否则会抛出异常。
欲了解更多信息:
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 时,您可能会遇到问题。对于 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)
您可以使用 diagnostics.Event 日志类创建自己的自定义事件。打开一个 Windows 应用程序并在一个按钮上单击执行以下代码。
System.Diagnostics.EventLog.CreateEventSource("ApplicationName", "MyNewLog");
“MyNewLog”是指您想为您的登录事件查看器提供的名称。
有关更多信息,请查看此链接 [ http://msdn.microsoft.com/en-in/library/49dwckkz%28v=vs.90%29.aspx]