package CIAPI.Java.logging;
import java.io.File;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
/**
* Static class for creating logs.
*
* @author justin nelson
*
*/
public class Log {
private static boolean skipLogging = false;
private static final boolean debug = true;
private static final boolean trace = true;
static {
String desiredLogger = "files/log_config/log_config.xml";
File f = new File(desiredLogger);
if (f.exists()) {
DOMConfigurator.configure(desiredLogger);
} else {
skipLogging = true;
System.out
.println("Not logging any thing :( - couldn't find log file at: "
+ desiredLogger);
}
}
/**
* Gives you a logger for the class that called it.
*
* @return a logger
*/
private static Logger getLogger() {
// Grabs the stacktrace element a few up the stack.
// 0 is the call to getStackTrace
// 1 is this method
// 2 is the wrapper method around this log method
// 3 is the method we want
StackTraceElement trace = Thread.currentThread().getStackTrace()[3];
return Logger.getLogger(trace.getClassName());
}
/**
* Logs a message
*
* @param message
*/
public static void trace(Object message) {
if (trace && !skipLogging)
getLogger().trace(message);
}
/**
* Logs a message
*
* @param message
*/
public static void debug(Object message) {
if (debug && !skipLogging)
getLogger().debug(message);
}
/**
* Logs a message
*
* @param message
*/
public static void info(Object message) {
if (!skipLogging)
getLogger().info(message);
}
/**
* Logs a message
*
* @param message
*/
public static void warn(Object message) {
if (!skipLogging)
getLogger().warn(message);
}
/**
* Logs a message
*
* @param message
* @param error
*/
public static void warn(Object message, Exception error) {
if (!skipLogging)
getLogger().warn(message, error);
}
/**
* Logs a message
*
* @param message
*/
public static void error(String message) {
if (!skipLogging)
getLogger().error(message);
}
/**
* Logs a message
*
* @param message
* @throws T
*/
public static <T extends Throwable> void error(T message) throws T {
if (!skipLogging)
getLogger().error(message);
throw message;
}
/**
* Logs a message
*
* @param message
* @param error
*/
public static void error(Object message, Exception error) {
if (!skipLogging)
getLogger().error(message, error);
}
}