@Override
  public void open() {
    InputStream inputStream = createInputStream(myDeploymentName);
    if (inputStream == null) {
      return;
    }

    InputStreamReader streamReader = new InputStreamReader(inputStream);
    final BufferedReader bufferedReader = new BufferedReader(streamReader);

    myTotalLines = 0;
    myLines2Skip = 0;

    new Thread("log pipe") {

      @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 String toString() {
        int NAME_SIZE = 8;
        String shortName = myDeploymentName.length() < NAME_SIZE ? myDeploymentName : myDeploymentName.substring(0, NAME_SIZE);
        return "Thread[LP]@" + Integer.toHexString(System.identityHashCode(this)) + " for: " + shortName + "[" + myLogPipeName + "]";
      }
    }.start();
  }
@Override
  public void open()