/** * * Copyright (c) 2013, Openflexo * * This file is part of ./org.openflexo.emfconnector.metamodel.exporter.application.headless/src/org/openflexo/emfconnector/metamodel/exporter/application/headless/FileLogListener.java, a component of the software infrastructure * developed at Openflexo. * * * Openflexo is dual-licensed under the European Union Public License (EUPL, either * version 1.1 of the License, or any later version ), which is available at * https://joinup.ec.europa.eu/software/page/eupl/licence-eupl * and the GNU General Public License (GPL, either version 3 of the License, or any * later version), which is available at http://www.gnu.org/licenses/gpl.html . * * You can redistribute it and/or modify under the terms of either of these licenses * * If you choose to redistribute it and/or modify under the terms of the GNU GPL, you * must include the following additional permission. * * Additional permission under GNU GPL version 3 section 7 * * If you modify this Program, or any covered work, by linking or * combining it with software containing parts covered by the terms * of EPL 1.0, the licensors of this Program grant you additional permission * to convey the resulting work. * * * This software is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. * * See http://www.openflexo.org/license.html for details. * * * Please contact Openflexo (openflexo-contacts@openflexo.org) * or visit www.openflexo.org if you need additional information. * */ package org.openflexo.emfconnector.metamodel.exporter.application.headless; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintStream; import org.eclipse.core.runtime.ILogListener; import org.eclipse.core.runtime.IStatus; public class FileLogListener implements ILogListener { protected final String folderpath; protected final int severityMask; protected PrintStream logStream = null; public FileLogListener(String folderpath, int severityMask) { this.folderpath = folderpath; this.severityMask = severityMask; } public void init() { File logFolder = new File(folderpath); if (!logFolder.exists()) { logFolder.mkdirs(); } File logFile = new File(logFolder.getAbsolutePath() + File.separator + "log-" + System.currentTimeMillis() + ".log"); try { logFile.createNewFile(); logStream = new PrintStream(logFile); System.setOut(logStream); System.setErr(logStream); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void finish() { if (logStream != null) { logStream.close(); logStream = null; } } public void logging(IStatus status, String plugin) { if (status.matches(severityMask)) { logStream.append(plugin + " : " + status.getMessage()); } } }