Using loggable module instead of redeclaring logging methods in multiple files

This commit is contained in:
Midpoint Applications 2014-07-30 22:49:52 -04:00
parent 03de5d3456
commit fde7148ee1
3 changed files with 17 additions and 22 deletions

View File

@ -1,6 +1,7 @@
require 'java'
require 'red_storm/configurator'
require 'red_storm/environment'
require 'red_storm/loggable'
require 'pathname'
java_import 'backtype.storm.tuple.Fields'
@ -12,16 +13,13 @@ module RedStorm
class BoltError < StandardError; end
class Bolt
include Loggable
attr_reader :collector, :context, :config
def self.java_proxy; "Java::RedstormStormJruby::JRubyBolt"; end
# DSL class methods
def self.log
@log ||= Java::OrgSlf4j::LoggerFactory.get_logger(self.name.gsub(/::/,'.'))
end
def self.output_fields(*fields)
@fields = fields.map(&:to_s)
end
@ -54,10 +52,6 @@ module RedStorm
# DSL instance methods
def log
self.class.log
end
def unanchored_emit(*values)
@collector.emit_tuple(Values.new(*values))
end

View File

@ -1,6 +1,7 @@
require 'java'
require 'red_storm/configurator'
require 'red_storm/environment'
require 'red_storm/loggable'
require 'pathname'
module RedStorm
@ -9,6 +10,7 @@ module RedStorm
class SpoutError < StandardError; end
class Spout
include Loggable
attr_reader :config, :context, :collector
def self.java_proxy; "Java::RedstormStormJruby::JRubySpout"; end
@ -19,10 +21,6 @@ module RedStorm
@configure_block = block_given? ? configure_block : lambda {}
end
def self.log
@log ||= Java::OrgSlf4j::LoggerFactory.get_logger(self.name.gsub(/::/,'.'))
end
def self.output_fields(*fields)
@fields = fields.map(&:to_s)
end
@ -82,10 +80,6 @@ module RedStorm
end
alias_method :emit, :unreliable_emit
def log
self.class.log
end
# Spout proxy interface
def next_tuple

View File

@ -2,14 +2,21 @@ require 'java'
module RedStorm
module Loggable
def self.log
@log ||= Java::OrgSlf4j::LoggerFactory.get_logger(self.name)
def self.included(clazz)
clazz.send(:extend, ClassMethods)
clazz.send(:include, InstanceMethods)
end
def log
self.class.log
module ClassMethods
def log
@log ||= Java::OrgSlf4j::LoggerFactory.get_logger(self.name.gsub(/::/, '.'))
end
end
module InstanceMethods
def log
self.class.log
end
end
end
end