使用pywin32库中的win32evtlog写入Windows事件日志

时间:2018-07-17 15:26:59

标签: windows python-3.x events event-log pywin32

我有一个将在Windows服务器上运行的简单python脚本,我想将整个脚本中的特定事件记录到Windows事件日志中。有没有人有一个简单而精确的示例来写入Windows事件日志,因此我可以从事件查看器中查看事件。我已经阅读了pywin32库的文档,但找不到任何清晰的示例。我尝试使用以下方法构建事件:

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

我没有成功,有人可以进一步解释ReportEvent吗?

1 个答案:

答案 0 :(得分:1)

一个简单的例子:

>>> import sys
>>> import win32evtlogutil
>>> import win32evtlog
>>> import time
>>>
>>> "Python {:s} on {:s}".format(sys.version, sys.platform)
'Python 3.5.4 (v3.5.4:3f56838, Aug  8 2017, 02:17:05) [MSC v.1900 64 bit (AMD64)] on win32'
>>>
>>> DUMMY_EVT_APP_NAME = "Dummy Application"
>>> DUMMY_EVT_ID = 7040  # Got this from another event
>>> DUMMY_EVT_CATEG = 9876
>>> DUMMY_EVT_STRS = ["Dummy event string {:d}".format(item) for item in range(5)]
>>> DUMMY_EVT_DATA = b"Dummy event data"
>>>
>>> "Current time: {:s}".format(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
 'Current time: 2018-07-18 20:03:08'
>>>
>>> win32evtlogutil.ReportEvent(
...     DUMMY_EVT_APP_NAME, DUMMY_EVT_ID, eventCategory=DUMMY_EVT_CATEG,
...     eventType=win32evtlog.EVENTLOG_WARNING_TYPE, strings=DUMMY_EVT_STRS,
...     data=DUMMY_EVT_DATA)
>>>

输出

Event Viewer

您可以在 Event Viewer mmc )窗口的(上图)图像中看到我从代码输入的值与事件字段之间的对应关系。

win32evtlogutil.ReportEvent[GitHub]: mhammond/pywin32 - Python for Windows (pywin32) Extensions的一部分,它是 WINAPI 上的 Python 包装器。

您需要了解的所有内容都在[MS.Docs]: ReportEventA function中进行了说明,它是用于完成此任务的 WINAPI 。请务必仔细阅读(以及它引用的其他 URL ),以便对参数,其值可能是什么以及其他信息更加熟悉。

请确保不要滥用(包括测试),否则您可能最终使事件日志被大量垃圾数据污染。