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

Reply via email to