package edu.upenn.cit594.logging; import java.io.File; import java.io.FileWriter; import java.io.PrintStream; import java.io.PrintWriter; import edu.upenn.cit594.ui.UserInterface; public class Logger { private PrintWriter output; private static PrintStream err = System.err; private Logger() {} private static Logger instance = new Logger(); private String filePath; private File file; public static Logger getInstance() { return instance; } public void log(String text) { try { FileWriter fileWriter = new FileWriter(this.file, true); output = new PrintWriter(fileWriter); logCurrentTime(); fileWriter.write(text); flush(); fileWriter.close(); } catch (Exception e) { logError(text); return; } } public boolean setFile(String file_path) { this.filePath = file_path; try { //String[] parse_file_parts = file_path.split("\\."); //String parse_file_extension = parse_file_parts[parse_file_parts.length-1].toLowerCase(); this.file = new File(this.filePath); this.file.createNewFile(); if (!this.file.canRead()) { UserInterface.print("Log file can not be read."); return false; } else if (!this.file.canWrite()) { UserInterface.print("Log file can not be written to."); return false; } else { return true; } } catch (Exception e) { UserInterface.print(e.getMessage()); return false; } } public static void logError(String errorMsg) { //System.setErr(err); err.println(errorMsg); } /** * Helper function that lets the logger prepend each event with a time stamp */ private void logCurrentTime() { output.print(System.currentTimeMillis() + " "); } /** * Logs new line and flushes the current output */ private void flush() { output.println(); output.flush(); } }