StreamLogger.java

package org.itsallcode.process;

import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

class StreamLogger implements ProcessStreamConsumer {

    private static final Logger LOG = Logger.getLogger(StreamLogger.class.getName());
    private final Level logLevel;
    private final long pid;
    private final String streamName;

    StreamLogger(long pid, String streamName, Level logLevel) {
        this.pid = pid;
        this.streamName = streamName;
        this.logLevel = logLevel;
    }

    @Override
    public void accept(String line) {
        LOG.log(logLevel, () -> "%d:%s> %s".formatted(pid, streamName, line));
    }

    @Override
    public void streamFinished() {
        // Ignore
    }

    @Override
    public void streamReadingFailed(IOException exception) {
        // Ignore
    }
}