package com.fourspaces.featherdb.utils;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
public class Logger {
final protected static Map<String,Logger> cache = new HashMap<String,Logger>();
private java.util.logging.Logger logger;
private Logger(String id) {
logger=java.util.logging.Logger.getLogger(id);
logger.setLevel(Level.FINE);
}
public static Logger get(Class clazz) {
return get(clazz.getCanonicalName());
}
public static Logger get(String id) {
if (!cache.containsKey(id)) {
cache.put(id,new Logger(id));
}
return cache.get(id);
}
protected String msg(String msg, Object...objs) {
for (Object obj:objs) {
if (msg.indexOf("{}")>-1) {
String objStr;
if (obj==null) {
objStr = "null";
} else {
objStr = obj.toString();
}
int idx = msg.indexOf("{}");
msg = msg.substring(0,idx) + objStr + msg.substring(idx+2);
}
}
return msg;
}
public void debug(String msg, Object...objs) {
if (logger.isLoggable(Level.INFO)) {
msg = msg(msg,objs);
logger.log(Level.INFO,msg);
}
}
public void warn(String msg, Object...objs) {
if (logger.isLoggable(Level.WARNING)) {
msg = msg(msg,objs);
logger.log(Level.WARNING,msg);
}
}
public void info(String msg, Object...objs) {
if (logger.isLoggable(Level.INFO)) {
msg = msg(msg,objs);
logger.log(Level.INFO,msg);
}
}
public void error(String msg, Object...objs) {
if (logger.isLoggable(Level.SEVERE)) {
msg = msg(msg,objs);
logger.log(Level.SEVERE,msg);
}
}
public void error(Exception e, String msg, Object...objs) {
if (logger.isLoggable(Level.SEVERE)) {
msg = msg(msg,objs);
e.printStackTrace();
logger.log(Level.SEVERE,msg,e);
}
}
public void error(Exception e) {
if (logger.isLoggable(Level.SEVERE)) {
e.printStackTrace();
logger.log(Level.SEVERE,e.getLocalizedMessage(),e);
}
}
}