package org.torproject.jtor.logging.impl; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import org.torproject.jtor.logging.LogEntry; import org.torproject.jtor.logging.LogEntry.LogLevel; import org.torproject.jtor.logging.LogReader; public class DefaultConsoleLogReader implements LogReader { private final DateFormat dateFormat = new SimpleDateFormat("MM/dd/yy HH:mm:ss.SSS"); public void log(LogEntry entry) { final OutputState out = new OutputState(entry); addBanner(out); out.println(entry.getMessage()); addException(out); printToConsole(out); } public void logRaw(String message) { System.out.println(message); } private void addBanner(OutputState out) { final LogEntry entry = out.getEntry(); out.print(getTimestamp()); switch(entry.getLevel()) { case DEBUG: out.print("DEBUG"); break; case INFO: out.print("INFO"); break; case WARNING: out.print("WARN"); break; case ERROR: out.print("ERROR"); break; } out.print(" (" + entry.getComponent() + ") : "); } private void addException(OutputState out) { final LogEntry entry = out.getEntry(); if(entry.getException() != null) { out.printException(entry.getException()); } } private String getTimestamp() { return "["+ dateFormat.format(new Date()) +"] "; } private void printToConsole(OutputState out) { final LogEntry entry = out.getEntry(); if(entry.getLevel() == LogLevel.ERROR) { System.err.print(out); } else { System.out.print(out); } } }