code: @Override
      @Trivial
      protected String getExecutionLogMessage(MessageType msgType) {
  
          LogHelper lh = new LogHelper();
          StringBuilder buf = lh.getBeginningPart(msgType);
  
          buf.append("invoking execution for a job");
          buf.append("\n JobInstance id = ");
          buf.append(getTopLevelNameInstanceExecutionInfo().getInstanceId());
          buf.append("\n JobExecution id = ");
          buf.append(getTopLevelNameInstanceExecutionInfo().getExecutionId());
          buf.append("\n Job Name = ");
          buf.append(getTopLevelNameInstanceExecutionInfo().getJobName());
  
          if (jobParameters != null) {
              buf.append("\n Job Parameters = ");
              buf.append(jobParameters);
          }
  
          if (!msgType.equals(MessageType.STARTED)) {
              buf.append("\n Job Batch Status = " + getBatchStatus());
              buf.append(", Job Exit Status = " + getExitStatus());
          }
          buf.append("\n" + LogHelper.dashes);
          return buf.toString();
      }
docs: This is unique for top-level jobs, and will be extended with subclass
  implementations to trace partitions and split-flows a bit differently.