private void copyLogTail() { if (configuration.getTailLogLinesToSave() <= 0) { return; } final Path tailOfLogPath = taskDefinition.getTaskDirectoryPath().resolve(configuration.getServiceFinishedTailLog()); if (Files.exists(tailOfLogPath)) { log.debug("{} already existed, skipping tail", tailOfLogPath); return; } final List<String> cmd = ImmutableList.of( "tail", "-n", Integer.toString(configuration.getTailLogLinesToSave()), taskDefinition.getServiceLogOut()); try { new SimpleProcessManager(log).runCommand(cmd, Redirect.to(tailOfLogPath.toFile())); } catch (Throwable t) { log.error( "Failed saving tail of log {} to {}", taskDefinition.getServiceLogOut(), configuration.getServiceFinishedTailLog(), t); } }
private void ensureServiceOutExists() { try { if (!Files.exists(taskDefinition.getServiceLogOutPath())) { Files.createFile(taskDefinition.getServiceLogOutPath()); } } catch (FileAlreadyExistsException faee) { log.debug("Executor out {} already existed", taskDefinition.getServiceLogOut()); } catch (Throwable t) { log.error("Failed creating executor out {}", taskDefinition.getServiceLogOut(), t); } }
private boolean writeTailMetadata(boolean finished) { if (!taskDefinition.getExecutorData().getLoggingTag().isPresent()) { if (!finished) { log.warn("Not writing logging metadata because logging tag is absent"); } return true; } final TailMetadata tailMetadata = new TailMetadata( taskDefinition.getServiceLogOut(), taskDefinition.getExecutorData().getLoggingTag().get(), taskDefinition.getExecutorData().getLoggingExtraFields(), finished); final Path path = TailMetadata.getTailMetadataPath( configuration.getLogMetadataDirectory(), configuration.getLogMetadataSuffix(), tailMetadata); return jsonObjectFileHelper.writeObject(tailMetadata, path, log); }