code: protected LogCopier buildLogCopier(Config config, ContainerId containerId, FileSystem destFs, Path appWorkDir)
        throws IOException {
      LogCopier.Builder builder = LogCopier.newBuilder()
              .useSrcFileSystem(FileSystem.getLocal(new Configuration()))
              .useDestFileSystem(destFs)
              .readFrom(getLocalLogDirs())
              .writeTo(getHdfsLogDir(containerId, destFs, appWorkDir))
              .acceptsLogFileExtensions(ImmutableSet.of(ApplicationConstants.STDOUT, ApplicationConstants.STDERR))
              .useLogFileNamePrefix(containerId.toString());
      if (config.hasPath(GobblinYarnConfigurationKeys.LOG_COPIER_MAX_FILE_SIZE)) {
        builder.useMaxBytesPerLogFile(config.getBytes(GobblinYarnConfigurationKeys.LOG_COPIER_MAX_FILE_SIZE));
      }
      if (config.hasPath(GobblinYarnConfigurationKeys.LOG_COPIER_SCHEDULER)) {
        builder.useScheduler(config.getString(GobblinYarnConfigurationKeys.LOG_COPIER_SCHEDULER));
      }
      return builder.build();
    }
docs: Build a {@link LogCopier} instance used to copy the logs out from this {@link GobblinYarnLogSource}.
  
  @param config the {@link Config} use to create the {@link LogCopier}
  @param containerId the {@link ContainerId} of the container the {@link LogCopier} runs in
  @param destFs the destination {@link FileSystem}
  @param appWorkDir the Gobblin Yarn application working directory on HDFS
  @return a {@link LogCopier} instance
  @throws IOException if it fails on any IO operation