package logging; import java.io.Closeable; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Calendar; /** * Logger.java * * @author Christopher Bertels (chbertel@uos.de) * @date 11.09.2008 */ public class Logger implements Closeable { private static Logger __instance = null; private File logFile = null; private FileWriter fw = null; /** * Konstruktor. Privat, da Singleton-Objekt. * * @param filename * @throws IOException */ private Logger(String filename) { logFile = new File(filename); try { fw = new FileWriter(logFile, true); fw.append("=====================\n"); fw.append(" New Sesstion \n"); fw.append("=====================\n"); } catch (IOException e) { e.printStackTrace(); } } /** * Nachricht in Log-Datei schreiben (mit Datum & Uhrzeit davor). * * @param message Die Nachricht, die mit Datum & Uhrzeit in die Log-Datei * geschrieben werden soll. */ public void write(String message) { if (logFile.canWrite()) { StringBuilder sb = new StringBuilder(); Calendar now = Calendar.getInstance(); sb.append(now.get(Calendar.DAY_OF_MONTH)); sb.append("."); sb.append(toFormattedString(now.get(Calendar.MONTH))); sb.append("."); sb.append(now.get(Calendar.YEAR)); sb.append(" - "); sb.append(toFormattedString(now.get(Calendar.HOUR_OF_DAY))); sb.append(":"); sb.append(toFormattedString(now.get(Calendar.MINUTE))); sb.append(":"); sb.append(toFormattedString(now.get(Calendar.SECOND))); sb.append(" :: "); sb.append(message); try { this.fw.append(sb.toString()); this.fw.append("\n"); } catch (IOException e) { e.printStackTrace(); System.out.println(e.getMessage()); } } } private String toFormattedString(int number) { if(number < 10) return "0" + number; else return Integer.toString(number); } /** * Nachricht in Log-Datei schreiben (ohne Datum & Uhrzeit davor). * * @param message Die Nachricht, die ohne Datum & Uhrzeit in die Log-Datei * geschrieben werden soll. */ public void writeWithoutDate(String message) { try { this.fw.append(message); this.fw.append("\n"); } catch (IOException e) { e.printStackTrace(); } } /** * Schließt die Log-Datei. Sollte am Ende des Programmablaufs aufgerufen * werden. */ @Override public void close() throws IOException { this.fw.flush(); this.fw.close(); } /** * Gibt Singleton-Logger Instanz zurück. * * @return Das globale Logger-Objekt. Kann ausgaben in Log-Datei * (Videothek.log) vornehmen. */ public static Logger get() { if (__instance == null) { __instance = new Logger("Videothek.log"); } return __instance; } }