package com.hqyg.disjob.quence;
import org.apache.log4j.Logger;
public class Log {
private static final String thisClassName = Log.class.getName();
private static final String msgSep = "\r\n";
private static Logger logger = null;
static {
logger = Logger.getLogger("");
}
private static Object getStackMsg(Object msg) {
StackTraceElement[] ste = Thread.currentThread().getStackTrace();
if (ste == null) {
return "";
}
boolean srcFlag = false;
for (int i = 0; i < ste.length; i++) {
StackTraceElement s = ste[i];
// 如果上一行堆栈代码是本类的堆栈,则该行代码则为源代码的最原始堆栈。
if (srcFlag) {
return s == null ? "" : s.toString() + msgSep + msg.toString();
}
// 定位本类的堆栈
if (thisClassName.equals(s.getClassName())) {
srcFlag = true;
i++;
}
}
return "";
}
public static void debug(Object msg) {
Object message = getStackMsg(msg);
logger.debug(message);
}
public static void debug(Object msg, Throwable t) {
Object message = getStackMsg(msg);
logger.debug(message, t);
}
public static void info(Object msg) {
Object message = getStackMsg(msg);
logger.info(message);
}
public static void info(Object msg, Throwable t) {
Object message = getStackMsg(msg);
logger.info(message, t);
}
public static void warn(Object msg) {
Object message = getStackMsg(msg);
logger.warn(message);
}
public static void warn(Object msg, Throwable t) {
Object message = getStackMsg(msg);
logger.warn(message, t);
}
public static void error(Object msg) {
Object message = getStackMsg(msg);
logger.error(message);
}
public static void error(Object msg, Throwable t) {
Object message = getStackMsg(msg);
if (logger != null) {
logger.error(message, t);
}
}
public static void fatal(Object msg) {
Object message = getStackMsg(msg);
logger.fatal(message);
}
public static void fatal(Object msg, Throwable t) {
Object message = getStackMsg(msg);
logger.fatal(message, t);
}
}