当NTEventLogHandler引发exception时,如何使用Python 2.7写入Windows系统日志

我正在尝试使用Pythons(2.7) logging.handlers.NTEventLogHandler将数据写入Windows 7上的系统日志。 这不起作用,因为显然有些registry访问被拒绝。 该软件将运行没有任何特殊的访问权限。 有什么办法可以做这个工作吗?

这是我得到的例外:

 Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import logging >>> from logging import handlers >>> syslog = handlers.NTEventLogHandler("Something") Traceback (most recent call last): File "<stdin>", line 1, in <module> File "c:\Python27\lib\logging\handlers.py", line 917, in __init__ self._welu.AddSourceToRegistry(appname, dllname, logtype) File "c:\Python27\lib\site-packages\win32\lib\win32evtlogutil.py", line 35, in AddSourceToRegistry "SYSTEM\\CurrentControlSet\\Services\\EventLog\\%s\\%s" % (eventLogType, app Name)) pywintypes.error: (5, 'RegCreateKey', 'Access is denied.') 

在Windows上使用syslog需要“Win32扩展为Python”。 你确定你已经安装了吗? [1]

从文档[2]:位于logging.handlers模块中的NTEventLogHandler类支持将日志消息发送到本地Windows NT,Windows 2000或Windows XP事件日志。 在使用它之前,您需要安装Mark Hammond的Win32 Python扩展。

[1] http://sourceforge.net/projects/pywin32/

[2] http://docs.python.org/2/library/logging.handlers.html