@Override
      public void run() {
        //init log listener
        onStartListening(getLogListener());
        try {
          while (true) {
            String line = bufferedReader.readLine();
            if (line == null) {
              if (isLogDebugEnabled()) {
                debug("Thread[LP]: end of log stream found: " + this);
              }
              break;
            }

            if (isLogDebugEnabled()) {
              debug("Thread[LP]: read line: ``" + line + "`` :" + this);
            }

            if (myLines2Skip == 0) {
              getLogListener().lineLogged(line + "\n");
              myTotalLines++;
            }
            else {
              myLines2Skip--;
            }
          }
        }
        catch (IOException e) {
          debugEx(e);
          myLoggingHandler.println(e.toString());
        }
        finally {
          LogListener logListener = getLogListener();
          if (isLogDebugEnabled()) {
            debug("Thread[LP]: Pipe thread about to quit, closing LogListener: " + logListener + " :" + this);
          }
          logListener.close();
        }
      }
@Override
      public void run()