package com.xiongyingqi;
import java.util.HashMap;
import java.util.Map;
/**
* Created by 瑛琪<a href="http://xiongyingqi.com">xiongyingqi.com</a> on 2014/5/6 0006.
*/
public class Logger {
private static Map<String, org.apache.log4j.Logger> nameLoggerMap = new HashMap<String, org.apache.log4j.Logger>();
// ---------------------------- debug ----------------------------
public static void debug(Object object, Object message) {
Class clazz = object.getClass();
debug(clazz, message);
}
public static void debug(Class clazz, Object message) {
org.apache.log4j.Logger logger = getLogger(clazz);
if (logger.isDebugEnabled()) {
logger.debug(message);
}
}
public static void debug(Object object, Object message, Throwable cause) {
Class clazz = object.getClass();
debug(clazz, message, cause);
}
public static void debug(Class clazz, Object message, Throwable cause) {
org.apache.log4j.Logger logger = getLogger(clazz);
if (logger.isDebugEnabled()) {
logger.debug(message, cause);
}
}
public static void debug(String name, Object message) {
org.apache.log4j.Logger logger = getLogger(name);
if (logger.isDebugEnabled()) {
logger.debug(message);
}
}
public static void debug(Object message) {
debug(whoInvoke(), message);
}
public static void debug(String name, Object message, Throwable cause) {
org.apache.log4j.Logger logger = getLogger(name);
if (logger.isDebugEnabled()) {
logger.debug(message, cause);
}
}
// ---------------------------- info ----------------------------
public static void info(Object object, Object message) {
info(object.getClass(), message);
}
public static void info(Class clazz, Object message) {
org.apache.log4j.Logger logger = getLogger(clazz);
if (logger.isInfoEnabled()) {
logger.info(message);
}
}
public static void info(Object object, Object message, Throwable cause) {
Class clazz = object.getClass();
info(clazz, message, cause);
}
public static void info(Class clazz, Object message, Throwable cause) {
org.apache.log4j.Logger logger = getLogger(clazz);
if (logger.isInfoEnabled()) {
logger.info(message, cause);
}
}
public static void info(String name, Object message) {
org.apache.log4j.Logger logger = getLogger(name);
if (logger.isInfoEnabled()) {
logger.info(message);
}
}
public static void info(String name, Object message, Throwable cause) {
org.apache.log4j.Logger logger = getLogger(name);
if (logger.isInfoEnabled()) {
logger.info(message, cause);
}
}
public static void info(Object message) {
info(whoInvoke(), message);
}
// ---------------------------- warn ----------------------------
public static void warn(Object object, Object message) {
warn(object.getClass(), message);
}
public static void warn(Class clazz, Object message) {
org.apache.log4j.Logger logger = getLogger(clazz);
logger.warn(message);
}
public static void warn(Object object, Object message, Throwable cause) {
warn(object.getClass(), message, cause);
}
public static void warn(Class clazz, Object message, Throwable cause) {
org.apache.log4j.Logger logger = getLogger(clazz);
logger.warn(message, cause);
}
public static void warn(String name, Object message) {
org.apache.log4j.Logger logger = getLogger(name);
logger.warn(message);
}
public static void warn(String name, Object message, Throwable cause) {
org.apache.log4j.Logger logger = getLogger(name);
logger.warn(message, cause);
}
public static void warn(Object message) {
warn(whoInvoke(), message);
}
// ---------------------------- error ----------------------------
public static void error(Object object, Object message) {
error(object.getClass(), message);
}
public static void error(Class clazz, Object message) {
org.apache.log4j.Logger logger = getLogger(clazz);
if (message instanceof Throwable) {
logger.error("Common Logger", (Throwable) message);
} else {
logger.error(message);
}
}
public static void error(Object object, Object message, Throwable cause) {
error(object.getClass(), message, cause);
}
public static void error(Class clazz, Object message, Throwable cause) {
org.apache.log4j.Logger logger = getLogger(clazz);
logger.warn(message, cause);
}
public static void error(String name, Object message) {
org.apache.log4j.Logger logger = getLogger(name);
logger.warn(message);
}
public static void error(String name, Object message, Throwable cause) {
org.apache.log4j.Logger logger = getLogger(name);
logger.warn(message, cause);
}
public static void error(Object message) {
error(whoInvoke(), message);
}
public static void error(Throwable throwable) {
error(whoInvoke(), "", throwable);
}
/**
* 获取间接调用的类名<p></p>
* 比如A方法调用B方法,B方法再调用whoInvoke()方法,这样B方法内就能返回A方法在那个类下
*
* @return
*/
private static Class whoInvoke() {
Throwable throwable = new Throwable();
StackTraceElement[] stackTraceElements = throwable.getStackTrace();
StackTraceElement stackTraceElement = stackTraceElements[2];
try {
return Class.forName(stackTraceElement.getClassName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
private static org.apache.log4j.Logger getLogger(Class clazz) {
return getLogger(clazz.getName());
}
private static org.apache.log4j.Logger getLogger(String name) {
org.apache.log4j.Logger logger = nameLoggerMap.get(name);
if (logger == null) {
logger = org.apache.log4j.Logger.getLogger(name);
}
return logger;
}
}