Skip to content

Instantly share code, notes, and snippets.

@mmennis
Created October 10, 2012 21:39
Show Gist options
  • Save mmennis/3868621 to your computer and use it in GitHub Desktop.
Save mmennis/3868621 to your computer and use it in GitHub Desktop.
Messing around with Win32 Eventlog in Ruby
# You'll need the win32 stuff and faked gem
require 'win32/eventlog'
require 'win32/mc'
include Win32
require 'time'
require 'faker'
target_rate = 1000
batch_size = 200
EventLog.add_event_source('source' => "Application", 'key_name' => "foo")
e1 = EventLog.open("Application")
sources = ["Fred", "Barney", "Wilma", "Betty", "Tom", "Jerry" ]
events = [EventLog::INFO, EventLog::ERROR, EventLog::WARN]
event_strings = []
50.times { event_strings << Faker::Lorem.sentence(30) }
start = Time.now.to_f
puts start
1000.times { |i|
e1.report_event(
:source => sources[i % sources.size],
:event_type => events[i % events.size],
:data => "These are initial messages"
)
}
puts Time.now.to_f
invoke_time = (Time.now.to_f - start)/1000
puts "The invoke time: " + invoke_time.to_s
interval = (1.0 - (target_rate * invoke_time))/target_rate
puts "The interval is: " + interval.to_s
puts Time.now.to_s
1000.times {
batch_size.times { |i|
begin
e1.report_event(
:source => sources[i % sources.size],
:event_type => events[i % events.size],
:data => event_strings[1 % event_strings.size]
)
rescue => e
puts "Here is the error from in begin: " + e.to_s
e1.clear
if e1.full?
puts "The log is full!!!!"
e1.clear
end
end
}
sleep (batch_size * interval)
}
puts Time.now.to_s
puts "The interval was: " + interval.to_s
puts "The interval by " + target_rate.to_s + " is: " + (target_rate * interval).to_s
e1.close
@mmennis
Copy link
Author

mmennis commented Mar 6, 2013

This should be enough to setup once ruby for windows is installed:

gem install win32-eventlog win32utils
gem install faker faker gem

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment