/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.utils.common.textstream.receivers; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.nio.file.Path; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import de.rcenvironment.core.utils.common.textstream.TextOutputReceiver; /** * A simple implementation of {@link TextOutputReceiver} that logs all received events to a file. * * @author Tobias Rodehutskors * */ public class FileLoggingTextOutputReceiver implements TextOutputReceiver { private final Log log = LogFactory.getLog(getClass()); private Path filepath; private BufferedWriter writer; /** * @param file path to a file into which the output should we written */ public FileLoggingTextOutputReceiver(Path file) { filepath = file; } @Override public void onStart() { try { FileOutputStream fos = new FileOutputStream(filepath.toFile()); OutputStreamWriter osw = new OutputStreamWriter(fos); writer = new BufferedWriter(osw); } catch (FileNotFoundException e) { log.error("File not found.", e); } } @Override public void onFinished() { try { writer.close(); } catch (IOException e) { log.error("Unable to close the output writer.", e); } } @Override public void onFatalError(Exception e) { try { writer.write(e.toString()); } catch (IOException ioException) { log.error("Unable to write exception.", e); } onFinished(); } @Override public void addOutput(String line) { try { writer.write(line); } catch (IOException e) { log.error("Unable to write.", e); } } }