/* # Licensed Materials - Property of IBM # Copyright IBM Corp. 2015 */ package com.ibm.streamsx.topology.internal.process; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.logging.Level; import java.util.logging.Logger; public class ProcessOutputToLogger implements Runnable { private final Logger logger; private final Level level; private final BufferedReader reader; public static void log(Logger logger, Process process) { // standard error new ProcessOutputToLogger(logger, Level.SEVERE, process.getErrorStream()); // standard out new ProcessOutputToLogger(logger, Level.INFO, process.getInputStream()); } ProcessOutputToLogger(Logger logger, Level level, InputStream processOutput) { super(); this.logger = logger; this.level = level; this.reader = new BufferedReader(new InputStreamReader(processOutput)); Thread t = new Thread(this); t.setDaemon(true); t.start(); } @Override public void run() { try (BufferedReader r = reader) { while (!Thread.currentThread().isInterrupted()) { String line = reader.readLine(); if (line == null) break; logger.log(level, line); } } catch (IOException e) { throw new RuntimeException(e); } } }