code: @Override
      protected void initDebugger() {
          // TODO: Maybe we want to extend the SmackDebugger for simplification
          //       and a performance boost.
  
          // Initialize a empty writer which discards all data.
          writer = new Writer() {
              @Override
              public void write(char[] cbuf, int off, int len) {
                  /* ignore */ }
  
              @Override
              public void close() {
                  /* ignore */ }
  
              @Override
              public void flush() {
                  /* ignore */ }
          };
  
          // Initialize a pipe for received raw data.
          try {
              readerPipe = new PipedWriter();
              reader = new PipedReader(readerPipe);
          }
          catch (IOException e) {
              // Ignore
          }
  
          // Call the method from the parent class which initializes the debugger.
          super.initDebugger();
  
          // Add listeners for the received and sent raw data.
          client.addBOSHClientResponseListener(new BOSHClientResponseListener() {
              @Override
              public void responseReceived(BOSHMessageEvent event) {
                  if (event.getBody() != null) {
                      try {
                          readerPipe.write(event.getBody().toXML());
                          readerPipe.flush();
                      } catch (Exception e) {
                          // Ignore
                      }
                  }
              }
          });
          client.addBOSHClientRequestListener(new BOSHClientRequestListener() {
              @Override
              public void requestSent(BOSHMessageEvent event) {
                  if (event.getBody() != null) {
                      try {
                          writer.write(event.getBody().toXML());
                      } catch (Exception e) {
                          // Ignore
                      }
                  }
              }
          });
  
          // Create and start a thread which discards all read data.
          readerConsumer = new Thread() {
              private Thread thread = this;
              private int bufferLength = 1024;
  
              @Override
              public void run() {
                  try {
                      char[] cbuf = new char[bufferLength];
                      while (readerConsumer == thread && !done) {
                          reader.read(cbuf, 0, bufferLength);
                      }
                  } catch (IOException e) {
                      // Ignore
                  }
              }
          };
          readerConsumer.setDaemon(true);
          readerConsumer.start();
      }
docs: Initialize the SmackDebugger which allows to log and debug XML traffic.