명령 줄에서 Windows EventLog 소스를 만드는 방법은 무엇입니까?


166

Windows EventLog에 물건을 기록하는 ASP.NET 응용 프로그램을 만들고 있습니다. 이를 위해서는 먼저 이벤트 소스를 작성해야합니다. 여기에는 관리 권한이 필요하므로 ASP.NET 앱에서는 관리 권한이 없습니다.

이벤트 로그 소스를 만들 수있는 Windows와 함께 번들로 제공되는 기존 명령 줄 응용 프로그램이 있습니까? 아니면 직접 배포해야합니까?

답변:


298

"eventcreate.exe"를 사용해보십시오

예를 들면 :

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

그러면 이벤트 로그 아래에 이벤트 유형 으로 이름 지정된 새 이벤트 소스 가 작성됩니다 .MYEVENTSOURCEAPPLICATIONINFORMATION

이 유틸리티는 XP 이후로만 포함되어 있다고 생각합니다.

추가 자료


13
"cmd"를 마우스 오른쪽 버튼으로 클릭하고 Vista에서 "관리자 권한으로 실행"을 선택해야합니다
Ian Ringrose

16
eventcreate는 기존 소스 아래에 이벤트를 기록하며 OP가 요청한대로 처음부터 새 소스를 만들지 않습니다.
Paul Chavez

5
명명 된 소스가 존재하지 않으면 @PaulChavez가 생성됩니다.
Farinha

1
MYEVENTSOURCE이미 존재하고 eventcreate가 아닌 다른 것을 사용하여 생성 된 이벤트는 생성되지 않습니다.
Chris S

2
이 작업을 수행하고 새 소스를 작성하는 동안 모든 이벤트에 "소스 myApp에서 이벤트 ID 0에 대한 설명을 찾을 수 없습니다.이 이벤트를 발생시키는 구성 요소가 로컬 컴퓨터에 설치되어 있지 않거나 설치가 손상되었습니다." 끝에 레지스트리를 편집하는 방법
dibs487

176

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
    

7
이것은 잘 작동합니다. 상승 된 권한으로 PowerShell을 실행해야합니다.
Rod

4
내가 만든 새 로그를 보려면 이벤트 뷰어를 열고 닫아야했습니다
amackay11

또한 적극적으로 개발하고있는 경우 New-EventLog-ing와 Remove-EventLog'다시 -ing 때 등 문제점이 발생할 수 있습니다 Source등록되어 있지만 지정에 기록하지 않습니다 Log. 컴퓨터를 다시 시작 하면 도움이됩니다. 또 다른 팁 : regedit 를 사용하여 이벤트 로그에서 진행중인 작업을 확인할 수 있습니다.[Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\]
Corio

44

다음 명령으로 Windows PowerShell을 사용할 수도 있습니다.

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

CreateEventSource를 호출하기 전에 소스가 존재하지 않는지 확인하십시오. 그렇지 않으면 예외가 발생합니다.

더 많은 정보를 위해서:



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됩니다.


1

또는 명령 행 명령을 사용하십시오.

이벤트 작성


1

그러나 cmd / 배치 버전이 작동하면 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)

-3

diagnostics.Event 로그 클래스를 사용하여 사용자 정의 이벤트를 작성할 수 있습니다. Windows 응용 프로그램을 열고 버튼을 클릭하여 다음 코드를 수행하십시오.

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

"MyNewLog"는 로그인 이벤트 뷰어에 부여 할 이름을 의미합니다.

자세한 내용은이 링크를 확인하십시오 [ http://msdn.microsoft.com/en-in/library/49dwckkz%28v=vs.90%29.aspx]

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.