/**
   * If param b is set to true, starts the necessary threads to monitor the process' stdout/stderr
   * and transfer the contents to a log file.
   */
  protected void setNativeLoggingUsed(boolean b) {
    if (b) {

      mServerStatus.setLogNative(shouldIndicateNativeLogging());

      FileHandler fileHandler = null;

      try {
        String logLocation = LogUtil.getLogLocation();

        int logFileSize = -1;
        try {
          logFileSize = DCPLib.getIntProperty("Logging.Servers." + mName + ".logFileSize");
        } catch (NoSuchProperty nsp) {
          logFileSize =
              DCPLib.getIntProperty(
                  "Logging.Defaults.logFileSize", CiscoLogger.DEFAULT_LOG_FILE_SIZE);
        }

        int logFileNumber = -1;

        try {
          logFileNumber = DCPLib.getIntProperty("Logging.Servers." + mName + ".logFileNumber");
        } catch (NoSuchProperty nsp) {
          logFileNumber =
              DCPLib.getIntProperty(
                  "Logging.Defaults.logFileNumber", CiscoLogger.DEFAULT_LOG_FILE_NUMBER);
        }

        if (LogUtil.getAppType().equals("unknown")) {
          fileHandler =
              new FileHandler(
                  logLocation + File.separator + getProcessNameForLog(),
                  logFileSize,
                  logFileNumber);
        } else {
          fileHandler =
              new FileHandler(
                  logLocation
                      + File.separator
                      + LogUtil.getAppType()
                      + "."
                      + LogUtil.getAppInst()
                      + "."
                      + getProcessNameForLog(),
                  logFileSize,
                  logFileNumber);
        }

        fileHandler.setFormatter(
            new java.util.logging.SimpleFormatter() {
              public synchronized String format(LogRecord record) {
                return formatMessage(record) + "\n";
              }
            });

      } catch (Exception ex) {
        mLogger.severe("Could not set up native handler for external process", ex);
      }

      mStdout = new ServerOutputThread(mName + ".stdout", mLogger, fileHandler);
      mStderr = new ServerOutputThread(mName + ".stderr", mLogger, fileHandler);

      // Get them running
      mStdout.start();
      mStderr.start();
    }

    mNativeLoggingUsed = b;
  }