如何使用Python创建Windows事件日志

时间:2020-10-19 09:17:08

标签: python windows pywin32 event-log

我在将事件日志写入Windows Event Viewer时遇到问题。我想在Applications and Services Logs菜单下注册一个自定义事件日志,但是我不知道要在Python中做(在这种情况下,我正在使用PyWin32)。基本上,我们可以向Powershell的New-EventLog注册一个自定义日志,但是我想用Python来完成。

这些是我做过的一些尝试:

  • 使用Powershell的New-EventLog创建事件日志:

New-EventLog -LogName <Log Name> -Source <Source>

  • 在Python中,打开一个注册了日志名称的处理程序:
import win32evtlog

hand = win32evtlog.OpenEventLog(None, 'CustomRegisteredEventLog')
# then write to Event Log
win32evtlog.ReportEvent(hand, win32evtlog.EVENTLOG_INFORMATION_TYPE, 0, 0, None, ['some message'], None)

上述步骤实际上有效,日志已成功提交到事件日志,但是我仍然需要使用Python注册事件日志。谁能指导我如何在Python上做到这一点?

1 个答案:

答案 0 :(得分:0)

我在下面为您发布了我目前对此理解的完整代码。

import win32evtlogutil
import win32evtlog
import sys

print("Python {0} on {1}".format(sys.version,sys.platform))

variable = ["x,","y","z"]


App_Name = "Python test"
App_Event_ID = 10001
App_Event_Category = 90
#App_Event_Type = win32evtlog.EVENTLOG_WARNING_TYPE
App_Event_Str = ["scanned: {}".format(var) for var in variable]
App_Event_Data= b"xyz"

'''

win32evtlogutil.ReportEvent(ApplicationName, EventID, EventCategory,EventType,Inserts, Data, SID)

'''


win32evtlogutil.ReportEvent(App_Name,App_Event_ID, eventCategory= App_Event_Category,
                                eventType=win32evtlog.EVENTLOG_INFORMATION_TYPE,
                                strings=App_Event_Str,data=App_Event_Data)
相关问题