[ IT 인프라 – 자동화 & 스크립트 ] 이벤트 뷰어에 사용자 지정 이벤트 ID 발생시키기 1부: eventcreate 명령어와 Bat 파일 완벽 가이드
인프라 운영 중 모니터링 시스템의 알람(SMS/메일)이 정상 작동하는지 테스트하거나, 배치 작업의 성공/실패 여부를 명확히 기록하기 위해 인위적인 이벤트 로그가 필요한 순간이 있습니다.
오늘은 복잡한 스크립팅 없이 Windows 기본 명령어인 eventcreate를 활용해 빠르고 직관적으로 이벤트를 발생시키는 Bat 파일 작성법을 알아보겠습니다.
📝 핵심 내용 요약
Windows 내장 명령어
eventcreate를 사용하면 별도 모듈 설치 없이 즉시 사용자 지정 이벤트를 생성할 수 있습니다.옵션(
/L,/T,/SO,/ID)을 조합하여 로그 위치, 심각도, 소스, 이벤트 ID를 자유롭게 구성합니다.[중요]
eventcreate의 ID 범위는 보안상 1~1000으로 하드코딩되어 있으므로, 한계점과 우회법(PowerShell)을 정확히 인지해야 합니다.
1. Eventcreate 명령어 기본 구조 상세 분석
Windows는 커맨드라인에서 이벤트를 기록할 수 있는 eventcreate 도구를 기본 제공합니다. 각 파라미터의 역할을 정확히 이해하면 원하는 형태의 로그를 마음대로 찍어낼 수 있습니다.
| 파라미터 | 기능 설명 | 허용 값 및 예시 |
/L | 로그 이름 (Log Name): 이벤트가 기록될 위치 지정 | APPLICATION (기본값), SYSTEM |
/T | 이벤트 유형 (Type): 로그의 심각도 수준 | SUC |
/SO | 이벤트 소스 (Source): 이벤트를 발생시킨 주체 | JimmyBackup, CustomMonitor 등 임의 문자열 |
/ID | 이벤트 ID (ID): 이벤트의 고유 식별 번호 | 1 ~ 1000 사이의 숫자 (예: 100, 999) |
/D | 설명 (Description): 이벤트 뷰어 본문에 남길 메시지 | "디스크 용량 부족 경고 테스트" |
💡 팁: /SO (이벤트 소스)를 처음 지정하여 실행할 때, Windows는 레지스트리(HKLM\SYSTEM\CurrentControlSet\Services\EventLog)에 해당 소스를 새로 등록하는 과정을 거칩니다. 따라서 커스텀 소스를 사용할 때는 최초 1회 관리자 권한으로 실행해야 합니다.
[💡 레지스트리 내부의 이벤트 소스 구조와 매니페스트(Manifest) 매핑 등 심도 있는 작동 원리는 분량이 꽤 되므로, 차후 Windows Server 심화 편에서 별도의 포스팅으로 상세히 다룰 예정입니다.]
2. 배치 파일(.bat) 작성 실전: 기존 ID vs 커스텀 ID 적용
명령어들을 조합하여 더블클릭만으로 실행되는 .bat 파일을 만들어 보겠습니다. 실무에서는 시스템에서 이미 약속된 일반적인 ID(예: 100)를 쓰는 경우도 있지만, 관제 시스템에서 **”이건 무조건 우리가 만든 커스텀 로그다!”**라고 식별하기 위해 잘 쓰이지 않는 번호(예: 999)를 사용하기도 합니다.
메모장을 열고 아래 코드를 복사하여 CustomEvent_Test.bat 이라는 이름으로 저장해 보세요.
@echo off
echo ========================================================
echo Windows 이벤트 뷰어 사용자 지정 로그 생성기
echo Created by Jimmy
echo ========================================================
echo.
:: 1. 일반적인 정보(Information) 이벤트 발생 (기존 ID 관례 사용: 100)
echo [작업 1] ID 100번 정보 로그를 기록합니다...
eventcreate /L APPLICATION /T INFORMATION /SO JimmyScript /ID 100 /D "백업 스크립트가 정상적으로 시작되었습니다."
:: 2. 식별용 커스텀 경고(Warning) 이벤트 발생 (최대 커스텀 ID 사용: 999)
echo [작업 2] ID 999번 커스텀 경고 로그를 기록합니다...
eventcreate /L APPLICATION /T WARNING /SO JimmyScript /ID 999 /D "모니터링 시스템 알람 수신 테스트용 커스텀 이벤트입니다."
echo.
echo 이벤트 생성이 완료되었습니다.
echo Win + R 키를 누르고 'eventvwr.msc'를 입력하여 확인해 보세요.
pause
(1) ventTest로 bat 파일 생성완료하였습니다. 메모장 저장시에 반드시 모든 파일로 저장해야 합니다.
만약 저장시 파일이 깨진다면 UTF-8에서 UTF-8(BOM) 또는 ANSI로 인코딩을 변경해주시길 바랍니다.

(2) bat 파일 우클릭하여 관리자 권한으로 실행된다면 다음과 같이 정상

(3) 완료 후 이벤트 뷰어로 확인 시 다음과 같이 보여집니다.

3. ⚠️ 주의사항: Eventcreate 명령어의 태생적 한계 및 예외 사항
“왜 모든 ID 값을 안 쓰고 ID 999 까지만 쓰나요?”라는 의문이 드실 수 있습니다. 여기에는 아주 중요한 실무적 배경이 있습니다.
실제 Windows 시스템과 애플리케이션은 1부터 65535까지의 이벤트 ID를 정상적으로 사용합니다. 대표적으로 Exchange Server를 운영해 보신 분들이라면 지긋지긋하게 보셨을 리소스 고갈 알람인 ‘Back Pressure(백 프레셔)’ 이벤트 ID는 15004입니다.
그렇다면 왜 eventcreate 명령어에 9999나 15004를 입력하면 구문 오류가 날까요?
이는 마이크로소프트의 의도적인 보안 제한(Hardcoding) 때문입니다. 일반 사용자가 단순한 CMD 명령어로 시스템의 핵심 이벤트(예: 15004)를 함부로 흉내 내어(Spoofing) 모니터링 관제 시스템을 교란하지 못하도록, eventcreate.exe 도구 자체에서만 1~1000까지만 입력 가능하도록 강제 제한을 걸어둔 것입니다.
4. 마무리
오늘은 eventcreate 명령어와 Bat 파일을 통해 복잡한 코딩 없이 직관적으로 이벤트 뷰어에 로그를 남기는 방법을 알아보았습니다. 단순 알람 테스트나 가벼운 작업 스케줄러 연동에는 이 방법이 가장 빠르고 효율적입니다.
하지만 앞서 짚어본 대로, Bat 파일 방식은 eventcreate 툴의 태생적 한계 때문에 9999나 15004 같은 시스템 고유 ID를 생성할 수 없으며, 세밀한 XML 구조의 로그 제어도 불가능합니다.
다음 시리즈 2번쨰 글의 포스팅에서는 보다 더 강력한 무기인 PowerShell을 활용해 이러한 1000번의 제한을 가볍게 우회하고, 완벽한 커스텀 이벤트를 생성하는 방법을 다뤄보겠습니다.