import java.io.IOException;
import java.io.OutputStream;
import java.net.URISyntaxException;
+import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.concurrent.TimeoutException;
import org.simantics.district.maps.server.utils.EnvUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.zeroturnaround.exec.InvalidExitValueException;
import org.zeroturnaround.exec.ProcessExecutor;
+import org.zeroturnaround.exec.stream.slf4j.Slf4jInfoOutputStream;
import org.zeroturnaround.exec.stream.slf4j.Slf4jStream;
public class NodeJS {
public static final String NODEJS_VERSION = "v4.8.0";
-
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(NodeJS.class);
private static final String NODE = "node";
private static Path nodeJSFolder() throws IOException, URISyntaxException {
}
public static int npm(OutputStream output, String... args) throws InvalidExitValueException, IOException, InterruptedException, TimeoutException, URISyntaxException {
+ LOGGER.info("Executing npm with args {}", Arrays.toString(args));
List<String> actualArgs = new ArrayList<>();
actualArgs.add(npmExecutable().toString());
actualArgs.addAll(Arrays.asList(args));
- ProcessExecutor exec = new ProcessExecutor().command(actualArgs).redirectOutput(Slf4jStream.ofCaller().asInfo()).destroyOnExit();
+ ProcessExecutor exec = new ProcessExecutor().command(actualArgs).redirectOutput(new Slf4jInfoOutputStream(LOGGER) {
+
+ @Override
+ protected void processLine(String line) {
+ // Convert to UTF-8 string
+ String utf8Line = new String(line.getBytes(), StandardCharsets.UTF_8);
+ log.info(utf8Line);
+ }
+ }).destroyOnExit();
+
if (output != null)
exec.redirectOutputAlsoTo(output);
return exec.execute().getExitValue();
import org.yaml.snakeyaml.Yaml;
import org.zeroturnaround.exec.ProcessExecutor;
import org.zeroturnaround.exec.StartedProcess;
-import org.zeroturnaround.exec.stream.slf4j.Slf4jStream;
+import org.zeroturnaround.exec.stream.slf4j.Slf4jDebugOutputStream;
import org.zeroturnaround.process.PidProcess;
import org.zeroturnaround.process.PidUtil;
import org.zeroturnaround.process.Processes;
StartedProcess startedProcess = new ProcessExecutor().directory(serverRoot.resolve("tileserver-mapnik").toFile()).destroyOnExit().environment(getEnv())
.command(NodeJS.executable().toString(), getTessera().toString(), "-c", getConfigJson().toString(), "-p", Integer.toString(MapsServerPreferences.defaultPort()))
- .redirectOutput(Slf4jStream.ofCaller().asDebug()).start();
+ .redirectOutput(new Slf4jDebugOutputStream(LOGGER) {
+
+ @Override
+ protected void processLine(String line) {
+ // Convert to UTF-8 string
+ String utf8Line = new String(line.getBytes(), StandardCharsets.UTF_8);
+ log.debug(utf8Line);
+ }
+ }).start();
Process nativeProcess = startedProcess.getProcess();
process = Processes.newStandardProcess(nativeProcess);