4. [pywin32] ReportEvent() 함수
ReportEvent(EventLog, Type, Category, EventID, UserSid, Strings, RawData)
ReportEvent 함수는 실제로 이벤트 로그를 만드는 함수입니다.
인자로는 EventLog : PyHANDLE, Type : int, Category : int, EventID : int, rUserSid : PySID, Strings : sequence, RawData : str 가 있습니다.
PyHANDLE 은 pywin32에서 정의한 타입으로 핸들값을 위한 형식입니다.
PySID 는 pywin32에서 정의한 타입으로 SID를 위한 형식입니다.
EventLog는 이벤트 로그에 대한 핸들 값으로 RegisterEventSource 함수의 리턴값인 핸들 값을 넣어주면 됩니다.
Type은 로그 타입으로 win32con.EVENTLOG_* 값 중 6가지를 사용합니다.
* win32con에 대한 설명은 win32con 페이지 참조
값 | 의미 |
win32con.EVENTLOG_AUDIT_SUCCESS | 감사 성공 이벤트 |
win32con.EVENTLOG_AUDIT_FAILURE | 감사 실패 이벤트 |
win32con.EVENTLOG_ERROR_TYPE | 오류 수준 이벤트 |
win32con.EVENTLOG_INFORMATION_TYPE | 정보 수준 이벤트 |
win32con.EVENTLOG_SUCCESS | 성공 이벤트 |
win32con.EVENTLOG_WARNING_TYPE | 경고 수준 이벤트 |
Category는 이벤트 로그를 어느 카테고리에 포함 시킬지 정하는 값인데 이건 이벤트 로그에 대응되는 message text file에서 정의해야 합니다. 이것에 대해서는 추후 설명하겠습니다. 일단 여기서는 1로 하겠습니다.
EventID는 이벤트 로그의 이벤트 ID를 설정하는 값인데 이것도 message text fil과 관계가 있습니다. 일단 여기서는 1로 하겠습니다.
UserSid는 사용자의 SID를 설정하는 값인데, win32api를 이용해서 SID를 추출할 수 있습니다. 이것도 추후 설명하겠습니다. 일단 여기서는 None으로 하겠습니다.
Strings 는 이벤트 로그의 이벤트 데이터에 포함시킬 값입니다.
RawData 는 이벤트 로그의 이벤트 데이터에 포함시킬 바이너리 값입니다.
import win32evtlog
import win32con
evHandle = win32evtlog.RegisterEventSource(None, "Application")
# 로그 이벤트 소스 등록
# 레지스트리에 있어야함
win32evtlog.ReportEvent(evHandle, win32con.EVENTLOG_AUDIT_SUCCESS,
1, 1, None, "test", b"rawdata")
win32evtlog.ReportEvent(evHandle, win32con.EVENTLOG_AUDIT_FAILURE,
1, 1, None, "test", b"rawdata")
win32evtlog.ReportEvent(evHandle, win32con.EVENTLOG_ERROR_TYPE,
1, 1, None, "test", b"rawdata")
win32evtlog.ReportEvent(evHandle, win32con.EVENTLOG_INFORMATION_TYPE,
1, 1, None, "test", b"rawdata")
win32evtlog.ReportEvent(evHandle, win32con.EVENTLOG_SUCCESS,
1, 1, None, "test", b"rawdata")
win32evtlog.ReportEvent(evHandle, win32con.EVENTLOG_WARNING_TYPE,
1, 1, None, "test", b"rawdata")
# 이벤트 로그 추가
win32evtlog.DeregisterEventSource(evHandle)
# 등록한 이벤트 소스 해제
앞에서 설명한 RegisterEventSource 함수와 DeregisterEventSource 함수 사이에 추가하였습니다.
그 결과를 이벤트 뷰어의 응용 프로그램 로그에서 확인할 수 있습니다.
'pywin32 > win32evtlog' 카테고리의 다른 글
6. [pywin32] CloseEventLog() 함수 (0) | 2020.07.24 |
---|---|
5. [pywin32] OpenEventLog() 함수 (2) | 2020.07.24 |
3. [pywin32] DeregisterEventSource() 함수 (0) | 2020.07.19 |
2. [pywin32] RegisterEventSource() 함수 (0) | 2020.07.19 |
1. [pywin32] win32evtlog 소개 (0) | 2020.07.19 |