如何从命令行创建Windows EventLog源?

时间:2009-01-15 13:22:48

标签: windows command-line event-log

我正在创建一个ASP.NET应用程序,它会将一些内容记录到Windows EventLog。要执行此操作,必须首先创建事件源。这需要管理权限,所以我无法在ASP.NET应用程序中执行此操作。

是否存在与Windows捆绑在一起的可以创建事件日志源的现有命令行应用程序,还是我必须自行推出?

7 个答案:

答案 0 :(得分:287)

尝试“eventcreate.exe”

一个例子:

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

这将在MYEVENTSOURCE事件日志下创建一个名为APPLICATION的新事件,作为INFORMATION事件类型< / em>的

我认为此实用程序仅包含在XP之后。

进一步阅读

答案 1 :(得分:168)

尝试使用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
    

答案 2 :(得分:42)

您还可以使用以下命令使用Windows PowerShell:

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

确保在调用CreateEventSource之前检查源是否存在,否则会引发异常。

欲了解更多信息:

答案 3 :(得分:11)

eventcreate2 可让您创建自定义日志,其中 eventcreate 不会。

答案 4 :(得分: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的事件源。

答案 5 :(得分:1)

或者只使用命令行命令:

Eventcreate

答案 6 :(得分:-3)

您可以使用diagnostics.Event日志类创建自己的自定义事件。 打开一个Windows应用程序,然后单击一个按钮,执行以下代码。

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

“MyNewLog”表示您要为日志事件查看器提供的名称。

有关详细信息,请查看此链接 [http://msdn.microsoft.com/en-in/library/49dwckkz%28v=vs.90%29.aspx]