Implemented a simple but working implementation of the java logging API,

complete with a test class
This commit is contained in:
Eric Scharff
2007-09-26 14:46:21 -06:00
parent 749ae86d49
commit bb4a7c21c7
6 changed files with 248 additions and 0 deletions

View File

@ -0,0 +1,6 @@
package java.util.logging;
public class Handler {
public void publish(LogRecord r) {
}
}

View File

@ -0,0 +1,30 @@
package java.util.logging;
public class Level {
public static final Level FINEST = new Level("FINEST", 300);
public static final Level FINER = new Level("FINER", 400);
public static final Level FINE = new Level("FINE", 500);
public static final Level INFO = new Level("INFO", 800);
public static final Level WARNING = new Level("WARNING", 900);
public static final Level SEVERE = new Level("SEVERE", 1000);
private final int value;
private final String name;
private Level(String name, int value) {
this.name = name;
this.value = value;
}
public int intValue() {
return value;
}
public String getName() {
return name;
}
public String toString() {
return name;
}
}

View File

@ -0,0 +1,38 @@
package java.util.logging;
public class LogRecord {
private final String loggerName;
private final String message;
private final Throwable thrown;
private final Level level;
private final String methodName;
LogRecord(String loggerName, String methodName, Level level, String message,
Throwable thrown) {
this.loggerName = loggerName;
this.message = message;
this.thrown = thrown;
this.level = level;
this.methodName = methodName;
}
public String getLoggerName() {
return loggerName;
}
public String getMessage() {
return message;
}
public Throwable getThrown() {
return thrown;
}
public Level getLevel() {
return level;
}
public String getSourceMethodName() {
return methodName;
}
}

View File

@ -0,0 +1,67 @@
package java.util.logging;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
public class Logger {
private final String name;
private static final ArrayList<Handler> handlers = new ArrayList<Handler>();
public static Logger getLogger(String name) {
return new Logger(name);
}
private Logger(String name) {
this.name = name;
}
public List<Handler> getHandlers() {
return handlers;
}
public void addHandler(Handler handler) {
handlers.add(handler);
}
public void removeHandler(Handler handler) {
handlers.remove(handler);
}
public void fine(String message) {
log(Level.FINE, Method.getCaller(), message, null);
}
public void info(String message) {
log(Level.INFO, Method.getCaller(), message, null);
}
public void warning(String message) {
log(Level.WARNING, Method.getCaller(), message, null);
}
public void severe(String message) {
log(Level.SEVERE, Method.getCaller(), message, null);
}
public void log(Level level, String message) {
log(level, Method.getCaller(), message, null);
}
public void log(Level level, String message, Throwable exception) {
log(level, Method.getCaller(), message, exception);
}
private void log(Level level, Method caller, String message,
Throwable exception) {
LogRecord r = new LogRecord(name, caller.getName(), level, message,
exception);
for (Handler h : handlers) {
h.publish(r);
}
}
public void setLevel(Level level) {
// Currently ignored
}
}