Commit a0ed4955 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

logger seperated

parent 1a5ea9df
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -189,7 +189,6 @@ module FnordMetric
  end

  def self.standalone
    require "fnordmetric/logger"
    require "fnordmetric/standalone"
  end

@@ -244,6 +243,7 @@ require "fnordmetric/acceptors/tcp_acceptor"
require "fnordmetric/acceptors/udp_acceptor"

require "fnordmetric/acceptor"
require "fnordmetric/logger"

require "fnordmetric/api"
require "fnordmetric/udp_client"
+2 −1
Original line number Diff line number Diff line
@@ -21,7 +21,8 @@ class FnordMetric::RedisBackend
  end

  def publish(message)
    @pub_redis.publish(@redis_channel, message.to_json)
    out = message.is_a?(String) ? message : message.to_json
    @pub_redis.publish(@redis_channel, out)
  end

  def hangup
+17 −9
Original line number Diff line number Diff line
class FnordMetric::Logger

  def self.start(logfile_path)    
    require 'json'
  def initialize(opts)
    @opts = opts
    opts.fetch(:file)

    $fnordmetric ||= []
    $fnordmetric << self
  end

  def initialized 
    logfile_path = @opts[:file]

    events = Queue.new
    dump_file = File.open(logfile_path, 'a+')

    fetcher = Thread.new do
      redis = Redis.new
      loop do
        event = events.pop

        dump_file.write(event+"\n")
        dump_file.write(event.to_json+"\n")
        dump_file.flush
      end
    end

    listener = Thread.new do  
      redis = Redis.new
      redis.subscribe("fnordmetric-announce") do |on|
        on.message do |channel, event|
      backend = FnordMetric.backend
      backend.subscribe do |event|
        events << event
      end
    end
    end

    FnordMetric.log "logging to #{logfile_path}"
    
    listener.join
  end