Skip to content

Instantly share code, notes, and snippets.

@ox
Created August 20, 2011 06:49
Show Gist options
  • Save ox/1158776 to your computer and use it in GitHub Desktop.
Save ox/1158776 to your computer and use it in GitHub Desktop.
Networked Logging in Ruby Using ZeroMQ
require 'zmq'
class Logger
def initialize
@context = ZMQ::Context.new
@pub = @context.socket ZMQ::PUB
@pub.bind "ipc://logger:general"
end
def log(message)
@pub.send message
end
end
logger = Logger.new
random_thread = Thread.new do
loop do
logger.log(rand().to_s)
sleep 1
end
end
random_thread.join
#!/usr/bin/env ruby
#a networked log writer. hopefully I can attach whatever
#end i want to it, so that this will take care of all of
#the logging needs, keeping the app running fast.
require 'zmq'
context = ZMQ::Context.new
#pubsub
sub = context.socket ZMQ::SUB
sub.setsockopt ZMQ::SUBSCRIBE, ""
sub.connect "ipc://logger:general"
file = File.new('current.log','a+')
listening_thread = Thread.new do
loop do
message = sub.recv
unless message.empty?
file.puts "got log: #{message}"
else
break
end
end
end
puts "thread set up."
puts "I'm listening for messages!"
listening_thread.join
file.close
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment