9. [pywin32] ReadEventLog() 함수
pywin32/win32evtlog2020. 7. 25. 00:25
[object,...] = ReadEventLog(Handle, Flags , Offset , Size )
OpenEventLog로 열었던 이벤트 로그의 내용을 읽어오는 함수입니다.
인자로는 Handle : PyHANDLE, Flags : int, Offset : int, Size=4096 : int가 있습니다.
Handle 은 OpenEventLog의 리턴값인 PyEVTLOG_HANDLE 값이 들어갈 수 있습니다
PyEVTLOG_HANDLE이 PyHANDLE을 상속했기 때문에 가능합니다.
Flags는 로그를 어떤식으로 읽을지 정하는 값입니다.
값 | 의미 |
win32evtlog.EVENTLOG_SEEK_READ | 로그를 Offset 부터 읽는다. * 현재 이 값은 오류로 인해 잘 되지 않는 듯 합니다. support.microsoft.com/ko-kr/help/177199/bug-readeventlog-fails-with-error-87 |
win32evtlog.EVENTLOG_SEQUENTIAL_READ | 로그를 순서대로 읽는다. |
값 | 의미 |
win32evtlog.EVENTLOG_FORWARDS_READ | 로그를 옛날 거부터 읽는다.(old to new) |
win32evtlog.EVENTLOG_BACKWARDS_READ | 로그를 최신 거 부터 읽는다.(new to old) |
Flag 값은 위의 값을 조합해서 설정하니다.
Offset은 win32evtlog.EVENTLOG_SEEK_READ이 설정될 때 의미있는 값입니다. 로그를 Offset부터 읽습니다.
Size=4096은 리턴값의 사이즈인데, 4096의 기본값을 사용하면 될 듯 합니다.
ReadEventLog 함수의 리턴값은 PyEventLogRecord Object를 갖는 리스트 형식인 듯 합니다.
PyEventLogRecord 의 속성 : timgolden.me.uk/pywin32-docs/PyEventLogRecord.html
import win32evtlog
pHandle = win32evtlog.OpenEventLog(None, "Application")
# Application 로그를 오픈
flag = win32evtlog.EVENTLOG_SE | win32evtlog.EVENTLOG_BACKWARDS_READ
num = win32evtlog.GetNumberOfEventLogRecords(pHandle)
# Application 로그의 현재 갯수 출력
print(f"{num}")
for i in range(num): # 로그의 현재 갯수 만큼 호출
x = win32evtlog.ReadEventLog(pHandle, flag, 0)
# 로그 Read
for j in x:
print(f"{j.TimeGenerated}")
# 편의상 시간 정보만 출
win32evtlog.CloseEventLog(pHandle)
# 로그 핸들 반환
예제를 실행한 결과로 227개의 로그를 최신거 부터 순서대로 시간 정보만을 출력한 결과입니다.
반응형
'pywin32 > win32evtlog' 카테고리의 다른 글
11. [pywin32] ClearEventLog() 함수 (0) | 2020.07.25 |
---|---|
10. [pywin32] BackupEventLog() 함수 (0) | 2020.07.25 |
8. [pywin32] GetOldestEventLogRecord() 함수 (0) | 2020.07.24 |
7. [pywin32] GetNumberOfEventLogRecords() 함수 (0) | 2020.07.24 |
6. [pywin32] CloseEventLog() 함수 (0) | 2020.07.24 |
댓글()