本人在使用log4j的時候最討厭的就是各種new logger對象了。由於出於偷懶的目的封裝了以下這個Log類。今天發布出來給大家分享一下。
共8個日志輸出方法,具體如下:
Log.debug("hello log4j"); //debug輸出
Log.debug("自定義Tag","hello log4j"); //debug輸出,帶自定義tag
Log.info("hello info"); //info輸出
Log.info("自定義Tag","hello info"); //info輸出,帶自定義tag
Log.warn("hello warn"); //warn輸出
Log.warn("自定義Tag","hello warn"); //warn輸出,帶自定義tag
Log.error("hello error"); //error輸出
Log.error("自定義Tag","hello error"); //error輸出,帶自定義tag
以下是封裝類的源代碼:
package com.ycl.core.common; import java.util.HashMap; import java.util.Map; import org.apache.log4j.Logger; public class Log { private static Map<String,Logger> loggerMap = new HashMap<String,Logger>(); public static void main(String[] args) throws ClassNotFoundException { Log.error("自定義LOG","sss444444"); } public static void debug(Object message){ String className = getClassName(); Logger log = getLogger(className); if(log.isDebugEnabled()){ log.debug(message); } } public static void debug(String tag, Object message){ String className = getClassName(); Logger log = getLogger(className); if(log.isDebugEnabled()){ log.debug(new StringBuffer().append("【").append(tag).append("】").append(message).toString()); } } public static void info(Object message){ String className = getClassName(); Logger log = getLogger(className); if(log.isInfoEnabled()){ log.info(message); } } public static void info(String tag, Object message){ String className = getClassName(); Logger log = getLogger(className); if(log.isInfoEnabled()){ log.info(new StringBuffer().append("【").append(tag).append("】").append(message).toString()); } } public static void warn(Object message){ String className = getClassName(); Logger log = getLogger(className); log.warn(message); } public static void warn(String tag, Object message){ String className = getClassName(); Logger log = getLogger(className); log.warn(new StringBuffer().append("【").append(tag).append("】").append(message).toString()); } public static void error(Object message){ String className = getClassName(); Logger log = getLogger(className); log.error(message); } public static void error(String tag, Object message){ String className = getClassName(); Logger log = getLogger(className); log.error(new StringBuffer().append("【").append(tag).append("】").append(message).toString()); } /** * 獲取最開始的調用者所在類 * @return */ private static String getClassName(){ Throwable th = new Throwable(); StackTraceElement[] stes = th.getStackTrace(); StackTraceElement ste = stes[2]; return ste.getClassName(); } /** * 根據類名獲得logger對象 * @param className * @return */ private static Logger getLogger(String className){ Logger log = null; if(loggerMap.containsKey(className)){ log = loggerMap.get(className); }else{ try { log = Logger.getLogger(Class.forName(className)); loggerMap.put(className, log); } catch (ClassNotFoundException e) { e.printStackTrace(); } } return log; } }
