/**
* MicroLog.java
*
* This program is distributed under the terms of the GNU General Public
* License
* Copyright 2008 NJ Pearman
*
* This file is part of MobScrob.
*
* MobScrob is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* MobScrob is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with MobScrob. If not, see <http://www.gnu.org/licenses/>.
*/
package mobscrob.logging;
import java.util.Calendar;
import java.util.Date;
import javax.microedition.midlet.MIDlet;
import net.sf.microlog.Logger;
import net.sf.microlog.util.Properties;
/**
* @author Neill
*
*/
public class MicroLog implements Log {
private static Logger log = Logger.getLogger();
private static boolean configured = false;
private final String className;
public MicroLog() {
className = "MicroLog";
}
private MicroLog(Class clazz) {
int start = clazz.getName().lastIndexOf('.') + 1;
this.className = clazz.getName().substring(start,
clazz.getName().length());
}
/**
* Configures the underlying Microlog Logger
*
* @param midlet
*/
public static void configure(MIDlet midlet) {
Properties props = new Properties(midlet);
log.configure(props);
configured = true;
}
public Log getInstance(Class clazz) {
if (!configured) {
System.out.println("ERROR: Logger not configured");
}
return new MicroLog(clazz);
}
public String getClassname() {
return className;
}
/* (non-Javadoc)
* @see mobscrob.logging.Log#info(java.lang.String, java.lang.String)
*/
public void info(String methodName, String msg) {
if (log.isInfoEnabled()) {
log.info(buildMessage(methodName, msg));
}
}
/* (non-Javadoc)
* @see mobscrob.logging.Log#info(java.lang.String, java.lang.String, java.lang.Throwable)
*/
public void info(String methodName, String msg, Throwable t) {
if (log.isInfoEnabled()) {
log.info(buildMessage(methodName, msg), t);
}
}
/* (non-Javadoc)
* @see mobscrob.logging.Log#trace(java.lang.String, java.lang.String)
*/
public void trace(String methodName, String msg) {
if (log.isTraceEnabled()) {
log.trace(buildMessage(methodName, msg));
}
}
/* (non-Javadoc)
* @see mobscrob.logging.Log#trace(java.lang.String, java.lang.String, java.lang.Throwable)
*/
public void trace(String methodName, String msg, Throwable t) {
if (log.isTraceEnabled()) {
log.trace(buildMessage(methodName, msg), t);
}
}
/* (non-Javadoc)
* @see mobscrob.logging.Log#debug(java.lang.String, java.lang.String)
*/
public void debug(String methodName, String msg) {
if (log.isDebugEnabled()) {
log.debug(buildMessage(methodName, msg));
}
}
/* (non-Javadoc)
* @see mobscrob.logging.Log#debug(java.lang.String, java.lang.String, java.lang.Throwable)
*/
public void debug(String methodName, String msg, Throwable t) {
if (log.isDebugEnabled()) {
log.debug(buildMessage(methodName, msg), t);
}
}
/* (non-Javadoc)
* @see mobscrob.logging.Log#error(java.lang.String, java.lang.String)
*/
public void error(String methodName, String msg) {
if (log.isErrorEnabled()) {
log.error(buildMessage(methodName, msg));
}
}
/* (non-Javadoc)
* @see mobscrob.logging.Log#error(java.lang.String, java.lang.String, java.lang.Throwable)
*/
public void error(String methodName, String msg, Throwable t) {
if (log.isErrorEnabled()) {
log.error(buildMessage(methodName, msg), t);
}
}
/* (non-Javadoc)
* @see mobscrob.logging.Log#fatal(java.lang.String, java.lang.String, java.lang.Throwable)
*/
public void fatal(String methodName, String msg, Throwable t) {
if (log.isFatalEnabled()) {
log.error(buildMessage(methodName, msg), t);
}
}
/* (non-Javadoc)
* @see mobscrob.logging.Log#warn(java.lang.String, java.lang.String)
*/
public void warn(String methodName, String msg) {
if (log.isWarnEnabled()) {
log.warn(buildMessage(methodName, msg));
}
}
/* (non-Javadoc)
* @see mobscrob.logging.Log#warn(java.lang.String, java.lang.String, java.lang.Throwable)
*/
public void warn(String methodName, String msg, Throwable t) {
if (log.isWarnEnabled()) {
log.warn(buildMessage(methodName, msg), t);
}
}
public static void close() {
log.closeLog();
}
private String buildMessage(String methodName, String msg) {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
StringBuffer buf = new StringBuffer();
buf.append(" [").append(cal.get(Calendar.YEAR)).append('-').append(
cal.get(Calendar.MONTH)).append('-').append(
cal.get(Calendar.DAY_OF_MONTH)).append(' ').append(
cal.get(Calendar.HOUR_OF_DAY)).append(':').append(
cal.get(Calendar.MINUTE)).append(':').append(
cal.get(Calendar.SECOND)).append('.').append(
cal.get(Calendar.MILLISECOND)).append("] [").append(className)
.append(".").append(methodName).append("] ").append(msg);
return buf.toString();
}
public static class LoggingException extends Exception {
public LoggingException(String msg) {
super(msg);
}
}
}