package apimining.pam.util; import java.io.File; import java.io.IOException; import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.Date; import java.util.logging.ConsoleHandler; import java.util.logging.FileHandler; import java.util.logging.Formatter; import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.LogManager; import java.util.logging.LogRecord; import java.util.logging.Logger; import org.apache.commons.io.FilenameUtils; public class Logging { /** Set up logging to console */ public static void setUpConsoleLogger(final Logger logger, final Level logLevel) { LogManager.getLogManager().reset(); logger.setLevel(logLevel); final Handler handler = setUpConsoleHandler(); logger.addHandler(handler); } /** Set up logging to file */ public static void setUpFileLogger(final Logger logger, final Level logLevel, final File logFile) { LogManager.getLogManager().reset(); logger.setLevel(logLevel); final Handler handler = setUpFileHandler(logFile.getAbsolutePath()); logger.addHandler(handler); } /** Set up logging to console and file */ public static void setUpConsoleAndFileLogger(final Logger logger, final Level logLevel, final File logFile) { LogManager.getLogManager().reset(); logger.setLevel(logLevel); final Handler chandler = setUpConsoleHandler(); final Handler fhandler = setUpFileHandler(logFile.getAbsolutePath()); logger.addHandler(chandler); logger.addHandler(fhandler); } /** Set the log file name */ public static File getLogFileName(final String algorithm, final boolean timeStampLog, final File logDir, final String dataset) { String timeStamp = ""; if (timeStampLog) timeStamp = "-" + new SimpleDateFormat("dd.MM.yyyy-HH:mm:ss").format(new Date()); return new File( logDir + File.separator + algorithm + "-" + FilenameUtils.getBaseName(dataset) + timeStamp + ".log"); } /** Set up console handler */ public static Handler setUpConsoleHandler() { final ConsoleHandler handler = new ConsoleHandler() { @Override protected void setOutputStream(final OutputStream out) throws SecurityException { super.setOutputStream(System.out); } }; handler.setLevel(Level.ALL); final Formatter formatter = new Formatter() { @Override public String format(final LogRecord record) { return record.getMessage(); } }; handler.setFormatter(formatter); return handler; } /** Set up file handler */ public static Handler setUpFileHandler(final String path) { FileHandler handler = null; try { handler = new FileHandler(path, 104857600, 1); } catch (SecurityException | IOException e) { e.printStackTrace(); } handler.setLevel(Level.ALL); final Formatter formatter = new Formatter() { @Override public String format(final LogRecord record) { return record.getMessage(); } }; handler.setFormatter(formatter); return handler; } private Logging() { } }