Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

PythonでWindowsイベントログを作成する方法

2021-02-24 06:41

Windowsイベントビューアへのイベントログの書き込みに問題があります。 アプリケーションとサービスログメニューでカスタムイベントログを登録したいのですが、Pythonで登録する必要がありません(この場合はPyWin32を使用しています)。基本的に、PowershellのNew-EventLog にカスタムログを登録できますが、Pythonで登録したいと思います。

これらは私が行ったいくつかの試みです:

  • PowershellのNew-EventLog を使用してイベントログを作成します:

New-EventLog -LogName -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 #

これについての私の現在の理解の完全なコードを以下に投稿します。

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)