package org.test4j.module.tracer; @SuppressWarnings({ "rawtypes" }) public class TracerManager { /** * 序列记录器 */ static ThreadLocal<TracerLogger> tracerFile = new ThreadLocal<TracerLogger>(); /** * 是否挂起jdbc记录 */ static ThreadLocal<Boolean> suspendJdbcTracer = new ThreadLocal<Boolean>(); private static final boolean logInTxt = TracerHelper.tracerLogInFile(); /** * 开始记录spring和jdbc跟踪信息 */ public static void startTracer() { boolean tracerEnabled = TracerHelper.doesTracerEnabled(); suspendJdbcTracer.set(false); if (tracerEnabled == false) { tracerFile.remove(); return; } tracerFile.set(TracerLogger.instance(logInTxt)); } /** * 结束输出spring bean和jdbc跟踪信息 */ public static void endTracer() { TracerLogger logger = tracerFile.get(); if (logger != null) { logger.close(); } tracerFile.remove(); } /** * 挂起jdbc跟踪 */ public static void suspendJDBC() { suspendJdbcTracer.set(true); } /** * 继续jdbc跟踪 */ public static void continueJDBC() { suspendJdbcTracer.set(false); } /** * 记录调用方法的入参 * * @param beanClazz * @param method * @param paras */ public static void traceBeanInputs(Class beanClazz, String method, Object[] paras) { TracerLogger logger = tracerFile.get(); if (logger == null) { return; } logger.writerMethodInputInfo(beanClazz, method, paras); } /** * 记录jdbc的sql语句 * * @param sql */ public static void traceJdbcStatement(String sql) { Boolean jdbcSuspend = suspendJdbcTracer.get(); TracerLogger logger = tracerFile.get(); if (jdbcSuspend == null || jdbcSuspend == true || logger == null) { return; } else { logger.writerSqlStatement(sql, null); } } /** * 记录调用方法的返回值 * * @param beanClazz * @param method * @param result */ public static void traceBeanReturn(Class beanClazz, String method, Object result) { TracerLogger logger = tracerFile.get(); if (logger == null) { return; } logger.writerMethodReturnValue(beanClazz, method, result); } /** * 记录调用方法抛出的异常 * * @param beanClazz * @param method * @param e */ public static void traceBeanException(Class beanClazz, String method, Throwable e) { TracerLogger logger = tracerFile.get(); if (logger == null) { return; } logger.writerMethodException(beanClazz, method, e); } }