programing

명령줄에서 Windows 이벤트 로그 소스를 만드는 방법은 무엇입니까?

instargram 2023. 6. 11. 10:19
반응형

명령줄에서 Windows 이벤트 로그 소스를 만드는 방법은 무엇입니까?

Windows 이벤트 로그에 기록할 ASP.NET 응용 프로그램을 만들고 있습니다.이렇게 하려면 이벤트 소스를 먼저 만들어야 합니다.이 작업은 관리자 권한이 필요하므로 ASP.NET 앱에서 수행할 수 없습니다.

이벤트 로그 소스를 생성할 수 있는 윈도우즈와 번들로 제공되는 기존 명령줄 애플리케이션이 있습니까? 아니면 직접 롤아웃해야 합니까?

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

예:

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

이름이 지정된 새 이벤트 소스가 생성됩니다.MYEVENTSOURCE아래APPLICATION이벤트 로그INFORMATION이벤트 유형.

이 유틸리티는 XP 이후에만 포함된 것 같습니다.

진일보한 내용

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
    

윈도우즈 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보다 큰 아이디입니다.이벤트를 사용하여 이벤트를 생성하는 경우1000+의 ID는 다음과 같이 파워셸을 사용합니다.

$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)

파워셸 7

이 답변은 5.x에서는 효과가 있었지만 7.x에서는 효과가 없었습니다. 잠시 고민한 끝에 다음과 같은 작업을 하게 되었습니다.

Import-Module Microsoft.PowerShell.Management -UseWindowsPowerShell
New-EventLog -LogName Application -Source MyApp

SO 답변을 통해 가져올 모듈을 우연히 발견했습니다.필요에 따라 윈도우즈 전용 cmdlet용으로 가져올 수 있는 모듈이 있습니다.나는 당신의 cmdlet을 기반으로 어떤 모듈을 가져올지 당신이 어떻게 결정할지 아직도 생각하고 있습니다.

진단을 사용하여 사용자 지정 이벤트를 생성할 수 있습니다.이벤트 로그 클래스입니다.Windows 응용 프로그램을 열고 단추를 클릭하여 다음 코드를 수행합니다.

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

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

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

언급URL : https://stackoverflow.com/questions/446691/how-to-create-windows-eventlog-source-from-command-line

반응형