Merge pull request #9 from jruby-gradle/slf4j

Defaulting to SL4J instead of Log4J
This commit is contained in:
R. Tyler Croy 2015-03-17 10:33:50 -07:00
commit 5fdde70ae1
7 changed files with 101 additions and 60 deletions

View File

@ -1,6 +1,8 @@
require 'java'
require 'red_storm/configurator'
require 'red_storm/environment'
require 'red_storm/loggable'
require 'pathname'
java_import 'backtype.storm.tuple.Fields'
java_import 'backtype.storm.tuple.Values'
@ -11,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::OrgApacheLog4j::Logger.getLogger(self.name)
end
def self.output_fields(*fields)
@fields = fields.map(&:to_s)
end
@ -59,10 +58,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,8 @@
require 'java'
require 'red_storm/configurator'
require 'red_storm/environment'
require 'red_storm/loggable'
require 'pathname'
module RedStorm
module DSL
@ -8,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
@ -18,10 +21,6 @@ module RedStorm
@configure_block = block_given? ? configure_block : lambda {}
end
def self.log
@log ||= Java::OrgApacheLog4j::Logger.getLogger(self.name)
end
def self.output_fields(*fields)
@fields = fields.map(&:to_s)
end
@ -81,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

@ -1,6 +1,7 @@
require 'java'
require 'red_storm/configuration'
require 'red_storm/configurator'
require 'red_storm/loggable'
java_import 'backtype.storm.topology.TopologyBuilder'
java_import 'backtype.storm.generated.SubmitOptions'
@ -11,8 +12,8 @@ module RedStorm
class TopologyDefinitionError < StandardError; end
class Topology
include Loggable
attr_reader :cluster # LocalCluster reference usable in on_submit block, for example
DEFAULT_SPOUT_PARALLELISM = 1
DEFAULT_BOLT_PARALLELISM = 1
@ -101,10 +102,6 @@ module RedStorm
end
end
def self.log
@log ||= Java::OrgApacheLog4j::Logger.getLogger(self.name)
end
# def self.spout(spout_class, contructor_args = [], options = {}, &spout_block)
def self.spout(spout_class, *args, &spout_block)
set_topology_class!

View File

@ -2,14 +2,21 @@ require 'java'
module RedStorm
module Loggable
def self.log
@log ||= Java::OrgApacheLog4j::Logger.getLogger(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

View File

@ -368,13 +368,14 @@ describe RedStorm::SimpleBolt do
# log specs are mostly the same ats in the spout specs. if these are modified, sync with spout
describe "log statement" do
module Java::OrgApacheLog4j end;
class Java::OrgApacheLog4j::Logger; end
module Java::OrgSlf4j end;
class Java::OrgSlf4j::Logger; end
class Java::OrgSlf4j::LoggerFactory; end
describe "in class" do
it "should proxy to storm log4j logger" do
logger = mock(Java::OrgApacheLog4j::Logger)
Java::OrgApacheLog4j::Logger.should_receive("getLogger").with("Bolt1").and_return(logger)
it "should proxy to storm slf4j logger" do
logger = mock(Java::OrgSlf4j::Logger)
Java::OrgSlf4j::LoggerFactory.should_receive("get_logger").with("Bolt1").and_return(logger)
logger.should_receive(:info).with("test")
class Bolt1 < RedStorm::SimpleBolt
@ -383,10 +384,10 @@ describe RedStorm::SimpleBolt do
end
it "should use own class name as logger id" do
logger1 = mock(Java::OrgApacheLog4j::Logger)
logger2 = mock(Java::OrgApacheLog4j::Logger)
Java::OrgApacheLog4j::Logger.should_receive("getLogger").with("Bolt1").and_return(logger1)
Java::OrgApacheLog4j::Logger.should_receive("getLogger").with("Bolt2").and_return(logger2)
logger1 = mock(Java::OrgSlf4j::Logger)
logger2 = mock(Java::OrgSlf4j::Logger)
Java::OrgSlf4j::LoggerFactory.should_receive("get_logger").with("Bolt1").and_return(logger1)
Java::OrgSlf4j::LoggerFactory.should_receive("get_logger").with("Bolt2").and_return(logger2)
logger1.should_receive(:info).with("test1")
logger2.should_receive(:info).with("test2")
@ -400,9 +401,9 @@ describe RedStorm::SimpleBolt do
end
describe "in instance" do
it "should proxy to storm log4j logger" do
logger = mock(Java::OrgApacheLog4j::Logger)
Java::OrgApacheLog4j::Logger.should_receive("getLogger").with("Bolt1").and_return(logger)
it "should proxy to storm slf4j logger" do
logger = mock(Java::OrgSlf4j::Logger)
Java::OrgSlf4j::LoggerFactory.should_receive("get_logger").with("Bolt1").and_return(logger)
class Bolt1 < RedStorm::SimpleBolt
on_init {log.info("test")}
@ -414,10 +415,10 @@ describe RedStorm::SimpleBolt do
end
it "should use own class name as logger id" do
logger1 = mock(Java::OrgApacheLog4j::Logger)
logger2 = mock(Java::OrgApacheLog4j::Logger)
Java::OrgApacheLog4j::Logger.should_receive("getLogger").with("Bolt1").and_return(logger1)
Java::OrgApacheLog4j::Logger.should_receive("getLogger").with("Bolt2").and_return(logger2)
logger1 = mock(Java::OrgSlf4j::Logger)
logger2 = mock(Java::OrgSlf4j::Logger)
Java::OrgSlf4j::LoggerFactory.should_receive("get_logger").with("Bolt1").and_return(logger1)
Java::OrgSlf4j::LoggerFactory.should_receive("get_logger").with("Bolt2").and_return(logger2)
class Bolt1 < RedStorm::SimpleBolt
on_init {log.info("test1")}
@ -434,6 +435,22 @@ describe RedStorm::SimpleBolt do
bolt2 = Bolt2.new
bolt2.prepare(nil, nil, nil)
end
it "should conform to SLF4J Named Hierarchy when loading loggers" do
logger = mock(Java::OrgSlf4j::Logger)
Java::OrgSlf4j::LoggerFactory.should_receive("get_logger").with("Named.Hierarchy.Bolt").and_return(logger)
module Named
module Hierarchy
class Bolt < RedStorm::SimpleBolt
on_init {log.info("test1")}
end
end
end
logger.should_receive(:info).with("test1")
bolt = Named::Hierarchy::Bolt.new
bolt.prepare(nil, nil, nil)
end
end
end
end

View File

@ -408,13 +408,14 @@ describe RedStorm::SimpleSpout do
# log specs are mostly the same ats in the bolt specs. if these are modified, sync with bolt
describe "log statement" do
module Java::OrgApacheLog4j end;
class Java::OrgApacheLog4j::Logger; end
module Java::OrgSlf4j end;
class Java::OrgSlf4j::Logger; end
class Java::OrgSlf4j::LoggerFactory; end
describe "in class" do
it "should proxy to storm log4j logger" do
logger = mock(Java::OrgApacheLog4j::Logger)
Java::OrgApacheLog4j::Logger.should_receive("getLogger").with("Spout1").and_return(logger)
it "should proxy to storm slf4j logger" do
logger = mock(Java::OrgSlf4j::Logger)
Java::OrgSlf4j::LoggerFactory.should_receive("get_logger").with("Spout1").and_return(logger)
logger.should_receive(:info).with("test")
class Spout1 < RedStorm::SimpleSpout
@ -423,10 +424,10 @@ describe RedStorm::SimpleSpout do
end
it "should use own class name as logger id" do
logger1 = mock(Java::OrgApacheLog4j::Logger)
logger2 = mock(Java::OrgApacheLog4j::Logger)
Java::OrgApacheLog4j::Logger.should_receive("getLogger").with("Spout1").and_return(logger1)
Java::OrgApacheLog4j::Logger.should_receive("getLogger").with("Spout2").and_return(logger2)
logger1 = mock(Java::OrgSlf4j::Logger)
logger2 = mock(Java::OrgSlf4j::Logger)
Java::OrgSlf4j::LoggerFactory.should_receive("get_logger").with("Spout1").and_return(logger1)
Java::OrgSlf4j::LoggerFactory.should_receive("get_logger").with("Spout2").and_return(logger2)
logger1.should_receive(:info).with("test1")
logger2.should_receive(:info).with("test2")
@ -440,9 +441,9 @@ describe RedStorm::SimpleSpout do
end
describe "in instance" do
it "should proxy to storm log4j logger" do
logger = mock(Java::OrgApacheLog4j::Logger)
Java::OrgApacheLog4j::Logger.should_receive("getLogger").with("Spout1").and_return(logger)
it "should proxy to storm slf4j logger" do
logger = mock(Java::OrgSlf4j::Logger)
Java::OrgSlf4j::LoggerFactory.should_receive("get_logger").with("Spout1").and_return(logger)
class Spout1 < RedStorm::SimpleSpout
on_init {log.info("test")}
@ -454,10 +455,10 @@ describe RedStorm::SimpleSpout do
end
it "should use own class name as logger id" do
logger1 = mock(Java::OrgApacheLog4j::Logger)
logger2 = mock(Java::OrgApacheLog4j::Logger)
Java::OrgApacheLog4j::Logger.should_receive("getLogger").with("Spout1").and_return(logger1)
Java::OrgApacheLog4j::Logger.should_receive("getLogger").with("Spout2").and_return(logger2)
logger1 = mock(Java::OrgSlf4j::Logger)
logger2 = mock(Java::OrgSlf4j::Logger)
Java::OrgSlf4j::LoggerFactory.should_receive("get_logger").with("Spout1").and_return(logger1)
Java::OrgSlf4j::LoggerFactory.should_receive("get_logger").with("Spout2").and_return(logger2)
class Spout1 < RedStorm::SimpleSpout
on_init {log.info("test1")}
@ -474,6 +475,22 @@ describe RedStorm::SimpleSpout do
spout2 = Spout2.new
spout2.open(nil, nil, nil)
end
it "should conform to SLF4J Named Hierarchy when loading loggers" do
logger = mock(Java::OrgSlf4j::Logger)
Java::OrgSlf4j::LoggerFactory.should_receive("get_logger").with("Named.Hierarchy.Spout").and_return(logger)
module Named
module Hierarchy
class Spout < RedStorm::SimpleSpout
on_init {log.info("test1")}
end
end
end
logger.should_receive(:info).with("test1")
spout = Named::Hierarchy::Spout.new
spout.open(nil, nil, nil)
end
end
end
end
@ -879,4 +896,4 @@ describe RedStorm::SimpleSpout do
end
end
end
end
end

View File

@ -65,6 +65,19 @@ describe RedStorm::SimpleTopology do
RedStorm::Configuration.topology_class.name.should == "Topology1"
end
it "should proxy to storm slf4j logger" do
logger = mock(Java::OrgSlf4j::Logger)
Java::OrgSlf4j::LoggerFactory.should_receive("get_logger").with("Topology1").and_return(logger)
logger.should_receive(:info).with("test")
RedStorm::Configuration.topology_class = nil
class Topology1 < RedStorm::SimpleTopology
log.info("test")
bolt BoltClass1 do
end
end
end
describe "interface" do
it "should implement topology proxy" do
topology = RedStorm::SimpleTopology.new
@ -651,4 +664,4 @@ describe RedStorm::SimpleTopology do
end
end
end
end