使用 pywin32 库中的 win32evtlog 写入 Windows 事件日志
Writing to Windows Event Log using win32evtlog from pywin32 library
我有一个简单的 python 脚本,它将 运行 在 windows 服务器上,我想将整个脚本中的特定事件记录到 windows事件记录日志。有没有人有一个简单而精确的写入 windows 事件日志的示例,这样我就可以从事件查看器中查看事件。我已经通读了 pywin32 库的文档,但找不到任何明确的示例。我尝试使用以下方法构建事件:
win32evtlogutil.ReportEvent(ApplicationName, EventID, EventCategory,
EventType, Inserts, Data, SID)
我没有成功,有人可以更深入地解释 ReportEvent 吗?
一个简单的例子:
>>> import sys
>>> import win32evtlogutil
>>> import win32evtlog
>>> import time
>>>
>>>
>>> "Python {0:s} on {1: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 {0:d}".format(item) for item in range(5)]
>>> DUMMY_EVT_DATA = b"Dummy event data"
>>>
>>> "Current time: {0: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)
>>>
输出:
您可以看到我从代码输入的值与事件查看器(mmc 的(上)图像中的事件字段之间的对应关系) window.
win32evtlogutil.ReportEvent 是 [GitHub]: mhammond/pywin32 - Python for Windows (pywin32) Extensions 的一部分,它是 Python 的包装器 WINAPIs.
您需要知道的一切都在 [MS.Docs]: ReportEventW function 中进行了解释,这是用于完成此任务的 WINAPI。请务必仔细阅读它(以及它引用的其他一些 URL),以便更熟悉参数、它们的值可能是什么以及其他信息。
确保不要滥用(包括测试),否则您最终可能会导致事件日志被大量垃圾数据污染。
我有一个简单的 python 脚本,它将 运行 在 windows 服务器上,我想将整个脚本中的特定事件记录到 windows事件记录日志。有没有人有一个简单而精确的写入 windows 事件日志的示例,这样我就可以从事件查看器中查看事件。我已经通读了 pywin32 库的文档,但找不到任何明确的示例。我尝试使用以下方法构建事件:
win32evtlogutil.ReportEvent(ApplicationName, EventID, EventCategory,
EventType, Inserts, Data, SID)
我没有成功,有人可以更深入地解释 ReportEvent 吗?
一个简单的例子:
>>> import sys >>> import win32evtlogutil >>> import win32evtlog >>> import time >>> >>> >>> "Python {0:s} on {1: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 {0:d}".format(item) for item in range(5)] >>> DUMMY_EVT_DATA = b"Dummy event data" >>> >>> "Current time: {0: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) >>>
输出:
您可以看到我从代码输入的值与事件查看器(mmc 的(上)图像中的事件字段之间的对应关系) window.
win32evtlogutil.ReportEvent 是 [GitHub]: mhammond/pywin32 - Python for Windows (pywin32) Extensions 的一部分,它是 Python 的包装器 WINAPIs.
您需要知道的一切都在 [MS.Docs]: ReportEventW function 中进行了解释,这是用于完成此任务的 WINAPI。请务必仔细阅读它(以及它引用的其他一些 URL),以便更熟悉参数、它们的值可能是什么以及其他信息。
确保不要滥用(包括测试),否则您最终可能会导致事件日志被大量垃圾数据污染。