Windows 事件日志的侦听器
Listener for Windows Event log
我可以使用下面的 java JNA 代码来读取 windows 事件日志
EventLogIterator iter = new EventLogIterator("EventLogName");
while(iter.hasNext()) {
EventLogRecord record = iter.next();
System.out.println(record.getRecordId()
+ ": Event ID: " + record.getEventId()
+ ", Event Type: " + record.getType()
+ ", Event Source: " + record.getSource());
}
我只想read/capture新活动。
JNA(或任何其他 java 库)中是否有 option/API 来监听 windows 事件日志?
EventLogIterator
有两个构造函数,一个只获取日志名称,the other 允许您指定服务器和标志。
您可以将参数 EVENTLOG_BACKWARDS_READ
标志传递给此构造函数,例如将您的第一行更改为:
new EventLogIterator(null, "EventLogName", WinNT.EVENTLOG_BACKWARDS_READ);
自事件日志记录 ID always increases1,如果您跟踪之前的最高值 getRecordId()
那么您可以在以下时间停止迭代你做到了,只有新活动。
您可以轻松地设置此例程以定期轮询。
1 recordId 是无符号的,并在最大 32 位值处回绕到 0,因此确定 "new" 事件的最佳方法是从中减去先前的 "highest"当前并测试一个正数。
我可以使用下面的 java JNA 代码来读取 windows 事件日志
EventLogIterator iter = new EventLogIterator("EventLogName");
while(iter.hasNext()) {
EventLogRecord record = iter.next();
System.out.println(record.getRecordId()
+ ": Event ID: " + record.getEventId()
+ ", Event Type: " + record.getType()
+ ", Event Source: " + record.getSource());
}
我只想read/capture新活动。
JNA(或任何其他 java 库)中是否有 option/API 来监听 windows 事件日志?
EventLogIterator
有两个构造函数,一个只获取日志名称,the other 允许您指定服务器和标志。
您可以将参数 EVENTLOG_BACKWARDS_READ
标志传递给此构造函数,例如将您的第一行更改为:
new EventLogIterator(null, "EventLogName", WinNT.EVENTLOG_BACKWARDS_READ);
自事件日志记录 ID always increases1,如果您跟踪之前的最高值 getRecordId()
那么您可以在以下时间停止迭代你做到了,只有新活动。
您可以轻松地设置此例程以定期轮询。
1 recordId 是无符号的,并在最大 32 位值处回绕到 0,因此确定 "new" 事件的最佳方法是从中减去先前的 "highest"当前并测试一个正数。