很多时候我们通过apache的LogFactory或log4j的logger打印内容的时,需要打印不同对象的内容:LoggerUtil.info(logger,map1,map2); - 分别打印map1和2的内容,用apache提供的的logger.info()方法就不是太方便了,因此写了如下工具类有助于日志多对象输出,如下所示
import java.util.*;@b@import org.apache.log4j.Logger;@b@@b@public final class LoggerUtil{@b@@b@ // ~~~ 符号定义@b@@b@ /** 线程编号修饰符 */@b@ public static final char THREAD_RIGHT_TAG = ']';@b@@b@ /** 线程编号修饰符 */@b@ public static final char THREAD_LEFT_TAG = '[';@b@@b@ /** 换行符 */@b@ public static final char ENTERSTR = '\n';@b@@b@ /** 逗号 */@b@ public static final char COMMA = ',';@b@@b@ /**@b@ * 禁用构造函数@b@ */@b@ private LoggerUtil() {@b@ // 禁用构造函数@b@ }@b@@b@ /**@b@ * 生成<font color="blue">调试级别日志@b@ * @b@ * @param logger 日志对象@b@ * @param obj 输出对象 输出对象@b@ */@b@ public static void debug(org.apache.log4j.Logger logger, Object... obj) {@b@ if (logger.isDebugEnabled()) {@b@ logger.debug(convertLogStr(obj));@b@ }@b@ }@b@@b@ /**@b@ * 生成<font color="blue">通知级别日志@b@ * @b@ * @param logger 日志对象@b@ * @param obj 输出对象@b@ */@b@ public static void info(Logger logger, Object... obj) {@b@ if (logger.isInfoEnabled()) {@b@ logger.info(convertLogStr(obj));@b@ }@b@ }@b@@b@ /**@b@ * 生成<font color="brown">警告级别日志@b@ * @b@ * @param logger 日志对象@b@ * @param obj 输出对象@b@ */@b@ public static void warn(Logger logger, Object... obj) {@b@@b@ logger.warn(convertLogStr(obj));@b@@b@ }@b@@b@ /**@b@ * 生成<font color="brown">警告级别日志@b@ * @b@ * @param logger 日志对象@b@ * @param obj 输出对象@b@ * @param t 异常对象@b@ */@b@ public static void warn(Logger logger, Throwable t, Object... obj) {@b@@b@ if (t == null) {@b@ logger.warn(convertLogStr(obj));@b@ } else {@b@ logger.warn(convertLogStr(obj), t);@b@ }@b@@b@ }@b@@b@ /**@b@ * 生成<font color="brown">错误级别日志@b@ * @b@ * @param logger 日志对象@b@ * @param obj 输出对象 @b@ * @param t 可为空@b@ */@b@ public static void error(Logger logger, Throwable t, Object... obj) {@b@@b@ if (t == null) {@b@ logger.error(convertLogStr(obj));@b@ } else {@b@ logger.error(convertLogStr(obj), t);@b@ }@b@@b@ }@b@@b@ /**@b@ * 获取日志@b@ * @b@ * @param obj 日志array@b@ * @return 拼接好的日志字符串@b@ */@b@ private static String convertLogStr(Object[] obj) {@b@ StringBuilder sb = new StringBuilder();@b@ for (Object o : obj) {@b@ sb.append(o);@b@ }@b@ return sb.toString();@b@ }@b@ @b@ public static void main(String[] args){@b@ @b@ Map<String, String> m1=new HashMap<String, String> ();@b@ m1.put("111", "aaa");@b@ @b@ Map<String, String> m2=new HashMap<String, String> ();@b@ m2.put("2222", "bbb");@b@ @b@ LoggerUtil.info(Logger.getLogger("test map1&2"),m1,m2);@b@ }@b@@b@}
运行结果
0 [main] INFO test map1&2 – {111=aaa}{2222=bbb}