package org.ow2.choreos.log;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
public class SimpleLoggerImpl implements SimpleLogger {
private static final String DEBUG = "DEBUG";
private static final String INFO = "INFO";
private static final String WARN = "WARN";
private static final String ERROR = "ERROR";
private File logFile;
public SimpleLoggerImpl(String fileName) {
logFile = new File(fileName);
try {
logFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void info(String message) {
this.writeMessage(INFO, message);
}
@Override
public void info(String message, Exception e) {
this.info(message);
this.writeMessage(INFO, e.getMessage());
}
@Override
public void debug(String message) {
this.writeMessage(DEBUG, message);
}
@Override
public void debug(String message, Exception e) {
this.debug(message);
this.writeMessage(DEBUG, e.getMessage());
}
@Override
public void error(String message) {
this.writeMessage(ERROR, message);
}
@Override
public void error(String message, Exception e) {
this.error(message);
this.writeMessage(ERROR, e.getMessage());
}
@Override
public void warn(String message) {
this.writeMessage(WARN, message);
}
@Override
public void warn(String message, Exception e) {
this.warn(message);
this.writeMessage(WARN, e.getMessage());
}
private void writeMessage(String level, String message) {
String entry = buildEntry(level, message);
try {
FileWriter writer = new FileWriter(logFile, true);
BufferedWriter out = new BufferedWriter(writer);
out.append(entry);
out.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private Calendar cal = Calendar.getInstance();
private String buildEntry(String level, String message) {
String timestamp = getTimestamp();
String entry = "[" + level + ": " + timestamp + "] " + message + "\n";
return entry;
}
private String getTimestamp() {
Date now = new Date();
cal.setTime(now);
String timestamp = cal.get(Calendar.HOUR_OF_DAY) + ":"
+ cal.get(Calendar.MINUTE) + ":" + cal.get(Calendar.SECOND);
return timestamp;
}
}