Hi there - I have a problem with my println and logger output not appearing any where i can find it when I deploy a topology to my one node cluster. I don't have this issue when i debug the topology in local mode. In local mode i see all the output.
As a simple example I have modified the ExclamationTopology in the storm starter project and tried to figure out where the output was going. My modifications are shown below (in MODIFIED ExclamationTopology section). >>>>>> So, my first question is: where should i be looking for std out output, and my logger output ? >>>>>> I have looked in the following places: 1) the console where i launch the topology 2) the captured standard output of nimbus and supervisor processes (that is /tmp/*.log), given the processes are launched as below: $STORMDIR/bin/storm nimbus > /tmp/nimbus.log 2>&1 & $STORMDIR/bin/storm supervisor > /tmp/supervisor.log 2>&1 & 3) All logfiles generated under $STORMDIR/logs/* >>>>>> My second question, is how is storm internal logger output being sent to stdout in the first place ? >>>>>> I am seeing lots of logger output going to my console that looks like this: 9059 [Thread-18-count] INFO backtype.storm.daemon.task - Emitting: count default [snow, 20] However, when I look in $STORMDIR/logback/cluster.xml , I don't see any appender configured that would go to stdout... I would assume that logback would require a config line like this: <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> But I see no such line in cluster.xml This leads me to believe that there is some additional mechanism to configure logging that I don't understand. Any leads much much appreciated ! thanks Chris MODIFIED ExclamationTopology public class ExclamationTopology { public static Logger LOG = LoggerFactory.getLogger(ExclamationTopology .class); public static class ExclamationBolt extends BaseRichBolt { OutputCollector _collector; @Override public void prepare(Map conf, TopologyContext context, OutputCollector collector) { _collector = collector; } @Override public void execute(Tuple tuple) { System.out.println(">>>>tuple: " + tuple); LOG.error(">>>>tuple: logger " + tuple); _collector.emit(tuple, new Values(tuple.getString(0) + "!!!")); _collector.ack(tuple); } @Override public void declareOutputFields(OutputFieldsDeclarer declarer) { declarer.declare(new Fields("word")); } } public static void main(String[] args) throws Exception { System.out.println(">>> STARING THE PROGRAM"); LOG.error(">>> -logger -- STARING THE PROGRAM"); TopologyBuilder builder = new TopologyBuilder(); etc. etc. the rest is the same as the 'stock version.. -- Chris Bedford Founder & Lead Lackey Build Lackey Labs: http://buildlackey.com Go Grails!: http://blog.buildlackey.com