Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从命令行创建Windows事件日志源?_Windows_Command Line_Event Log - Fatal编程技术网

如何从命令行创建Windows事件日志源?

如何从命令行创建Windows事件日志源?,windows,command-line,event-log,Windows,Command Line,Event Log,我正在创建一个ASP.NET应用程序,它将一些内容记录到Windows事件日志中。为此,必须首先创建事件源。这需要管理权限,因此我无法在ASP.NET应用程序中执行此操作 是否有与Windows捆绑在一起的现有命令行应用程序可以创建事件日志源,或者我必须推出自己的应用程序?或者只使用命令行命令: Eventcreate尝试“Eventcreate.exe” 例如: eventcreate /ID 1 /L APPLICATION /T INFORMATION /SO MYEVENTSOURCE

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


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

或者只使用命令行命令:

Eventcreate

尝试“Eventcreate.exe” 例如:

eventcreate /ID 1 /L APPLICATION /T INFORMATION  /SO MYEVENTSOURCE /D "My first log"
这将在
APPLICATION
事件日志下创建一个名为
MYEVENTSOURCE
的新事件源,作为
INFORMATION
事件类型

我认为这个实用程序只包括从XP开始

进一步阅读
  • Windows IT Pro:

  • 键入CMD提示符

  • Microsoft TechNet:Windows命令行参考:

  • SS64:Windows命令行参考:


允许您创建自定义日志,而eventcreate不允许创建自定义日志。

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

if ([System.Diagnostics.EventLog]::SourceExists($source) -eq $false) {
    [System.Diagnostics.EventLog]::CreateEventSource($source, "Application")
}
在调用CreateEventSource之前,请确保检查源不存在,否则它将引发异常

有关更多信息:

尝试PowerShell 2.0的EventLog cmdlet 将此应用于PowerShell 2.0及更高版本:

  • 运行一次以注册事件源:

    New-EventLog -LogName Application -Source MyApp
    
  • 然后使用写入日志:

    Write-EventLog 
        -LogName Application 
        -Source MyApp 
        -EntryType Error 
        -Message "Immunity to iocaine powder not detected, dying now" 
        -EventId 1
    

您可以使用diagnostics.event log类创建自己的自定义事件。 打开一个windows应用程序,在一个按钮上单击执行以下代码

System.Diagnostics.EventLog.CreateEventSource("ApplicationName", "MyNewLog");
“MyNewLog”是指您希望在事件查看器中为您的日志指定的名称

有关更多信息,请查看此链接
[

但是,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)

如果有人感兴趣,也可以通过添加一些注册表值手动创建事件源

将以下行另存为.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

这将创建一个名为
的事件源\u事件源\u名称\u在此处

您必须右键单击“cmd”并选择“以管理员身份运行”“从vista oneventcreate记录现有源下的事件,它不会按照OP的请求从头创建新源。@PaulChavez如果命名源不存在,它将被创建。如果
MYEVENTSOURCE
已经存在,并且是使用除EventCreate之外的其他东西创建的,则不会创建该事件,而这在正常工作且创建了一个新源“所有我的事件都有”无法找到源myApp中事件ID 0的说明。引发此事件的组件未安装在本地计算机上,或者安装已损坏因此,我必须在末尾编辑注册表。这很好,请记住以提升的权限运行PowerShell。我必须打开和关闭事件查看器以查看我创建的新日志。如果您正在积极开发和
new EventLog
-ing和
Remove EventLog
'-ing,来回运行
Source
已注册,但未写入指定的
日志。重新启动计算机有助于此。另一个提示:您可以在此处使用regedit查看事件日志的情况:
[computer\HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\]
@amackay11,在关闭和重新打开事件查看器时,一种更快捷/更简单的方法是单击其操作菜单并选择刷新。