2025年springboot aop日志管理(springboot日志管理界面)

springboot aop日志管理(springboot日志管理界面)Component Slf4j Aspect public class LogHandlerAs span style color rgba 0 0 255 1 private span

大家好,我是讯享网,很高兴认识大家。



@Component @Slf4j @Aspect public class LogHandlerAspect {
讯享网
讯享网</span><span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">final</span> String QUOTES = """<span style="color: rgba(0, 0, 0, 1)">; </span><span style="color: rgba(0, 128, 0, 1)">/</span><span style="color: rgba(0, 128, 0, 1)"> * 匹配所有带有@LogHandler注解的方法 * </span><span style="color: rgba(128, 128, 128, 1)">@author</span><span style="color: rgba(0, 128, 0, 1)"> YiLiChenTu * @date 2021/8/26 18:44 * </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)"> * </span><span style="color: rgba(128, 128, 128, 1)">@throws</span><span style="color: rgba(0, 128, 0, 1)"> *</span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)"> @Pointcut(</span>"execution(@com.xxx.common.annotation.LogHandler * *(..)) "<span style="color: rgba(0, 0, 0, 1)">) </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> resultLog(){} @Around(value </span>= "resultLog()"<span style="color: rgba(0, 0, 0, 1)">) </span><span style="color: rgba(0, 0, 255, 1)">public</span> Object around(ProceedingJoinPoint point) <span style="color: rgba(0, 0, 255, 1)">throws</span><span style="color: rgba(0, 0, 0, 1)"> Throwable { MethodSignature signature </span>=<span style="color: rgba(0, 0, 0, 1)"> (MethodSignature) point.getSignature(); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取切入点所在的方法</span> Method method =<span style="color: rgba(0, 0, 0, 1)"> signature.getMethod(); LogHandler logHandler </span>= method.getAnnotation(LogHandler.<span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)">); </span><span style="color: rgba(0, 0, 255, 1)">if</span> (logHandler == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">){ </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> point.proceed(); } </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取请求的类名</span> String className =<span style="color: rgba(0, 0, 0, 1)"> point.getTarget().getClass().getName(); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取请求的方法名</span> String methodName =<span style="color: rgba(0, 0, 0, 1)"> method.getName(); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">入参日志</span> 
before(point,signature,method,className,methodName,logHandler);
 </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 执行方法</span> Object result =<span style="color: rgba(0, 0, 0, 1)"> point.proceed(); </span><span style="color: rgba(0, 0, 255, 1)">boolean</span> fileOrStream =<span style="color: rgba(0, 0, 0, 1)"> isFileOrStream(result); Assert.isTrue(</span>!fileOrStream,"LogHandler====&gt;&gt; LoggerHandler日志注解不能作用于流或文件上"<span style="color: rgba(0, 0, 0, 1)">); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">后置日志</span> 
afterLog(result,className,methodName,logHandler);
讯享网 </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> result; } </span><span style="color: rgba(0, 128, 0, 1)">/</span><span style="color: rgba(0, 128, 0, 1)"> * 接口入参打印 * </span><span style="color: rgba(128, 128, 128, 1)">@author</span><span style="color: rgba(0, 128, 0, 1)"> YiLiChenTu * @date 2021/8/30 15:24 * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> joinPoint * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> signature * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> method * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> className * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> methodName * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> logHandler * </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)"> * </span><span style="color: rgba(128, 128, 128, 1)">@throws</span><span style="color: rgba(0, 128, 0, 1)"> *</span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> before(JoinPoint joinPoint,MethodSignature signature,Method method,String className,String methodName,LogHandler logHandler) { </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">{ Object[] args </span>=<span style="color: rgba(0, 0, 0, 1)"> joinPoint.getArgs(); String[] parameterNames </span>=<span style="color: rgba(0, 0, 0, 1)"> signature.getParameterNames(); Annotation[][] annotationArr </span>=<span style="color: rgba(0, 0, 0, 1)"> method.getParameterAnnotations(); </span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">int</span> i = 0; i &lt; parameterNames.length; i++<span style="color: rgba(0, 0, 0, 1)">){ Annotation[] annotations </span>=<span style="color: rgba(0, 0, 0, 1)"> annotationArr[i]; LoggerOut loggerOut </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">; </span><span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> (Annotation annotation : annotations) { </span><span style="color: rgba(0, 0, 255, 1)">if</span> (annotation <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> LoggerOut){ loggerOut </span>=<span style="color: rgba(0, 0, 0, 1)"> (LoggerOut) annotation; </span><span style="color: rgba(0, 0, 255, 1)">break</span><span style="color: rgba(0, 0, 0, 1)">; } } </span><span style="color: rgba(0, 0, 255, 1)">if</span> (loggerOut == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">){ </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">未携带注解的参数不处理</span> <span style="color: rgba(0, 0, 255, 1)">continue</span><span style="color: rgba(0, 0, 0, 1)">; } String paramName </span>=<span style="color: rgba(0, 0, 0, 1)"> parameterNames[i]; Object arg </span>=<span style="color: rgba(0, 0, 0, 1)"> args[i]; </span><span style="color: rgba(0, 0, 255, 1)">if</span> (arg == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">){ printLog(logHandler,</span>"LogHandler-param-log====&gt;&gt; className:{},methodName:{},param:{},value:{}"<span style="color: rgba(0, 0, 0, 1)">, className,methodName, paramName, </span><span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">); </span><span style="color: rgba(0, 0, 255, 1)">continue</span><span style="color: rgba(0, 0, 0, 1)">; } </span><span style="color: rgba(0, 0, 255, 1)">boolean</span> fileOrStream =<span style="color: rgba(0, 0, 0, 1)"> isFileOrStream(arg); Assert.isTrue(</span>!fileOrStream,"LogHandler-param-log====&gt;&gt; LoggerHandler日志注解不能作用于流或文件上"<span style="color: rgba(0, 0, 0, 1)">); </span><span style="color: rgba(0, 0, 255, 1)">boolean</span> flag =<span style="color: rgba(0, 0, 0, 1)"> isBaseTypeOrString(arg); </span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (flag){ </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">8中基本数据类型的包装类型,或者String类型,直接打印</span> printLog(logHandler,"LogHandler-param-log====&gt;&gt; className:{},methodName:{},param:{},value:{}"<span style="color: rgba(0, 0, 0, 1)">, className,methodName, paramName,arg); }</span><span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (arg <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> Collection){ </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">入参为集合类型,判断集合中是否为对象类型</span> Collection&lt;?&gt; list = (Collection&lt;?&gt;<span style="color: rgba(0, 0, 0, 1)">) arg; </span><span style="color: rgba(0, 0, 255, 1)">int</span> size =<span style="color: rgba(0, 0, 0, 1)"> list.size(); </span><span style="color: rgba(0, 0, 255, 1)">if</span> (size == 0 || isBaseTypeOrString(list.toArray()[0<span style="color: rgba(0, 0, 0, 1)">])){ printLog(logHandler,</span>"LogHandler-param-log====&gt;&gt; className:{},methodName:{},param:{},value:{}"<span style="color: rgba(0, 0, 0, 1)">, className,methodName, paramName,JSON.toJSONString(arg)); }</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> { log.warn(</span>"LogHandler-param-log====&gt;&gt; className:{},methodName:{},入参:{} 为集合类型,不打印"<span style="color: rgba(0, 0, 0, 1)">, className,methodName,paramName); } }</span><span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (arg <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> Object[]){ Object[] arr </span>=<span style="color: rgba(0, 0, 0, 1)"> (Object[]) arg; </span><span style="color: rgba(0, 0, 255, 1)">if</span> (arr.length == 0 || isBaseTypeOrString(arr[0<span style="color: rgba(0, 0, 0, 1)">])){ printLog(logHandler,</span>"LogHandler-param-log====&gt;&gt; className:{},methodName:{},param:{},value:{}"<span style="color: rgba(0, 0, 0, 1)">, className,methodName, paramName,JSON.toJSONString(arg)); }</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> { log.warn(</span>"LogHandler-param-log====&gt;&gt; className:{},methodName:{},param:{} 为对象数组,不打印"<span style="color: rgba(0, 0, 0, 1)">, className, methodName,paramName); } }</span><span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (arg <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> Map){ log.warn(</span>"LogHandler-param-log====&gt;&gt; className:{},methodName:{},入参:{} 为集合类型,不打印"<span style="color: rgba(0, 0, 0, 1)">, className,methodName,paramName); }</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> { </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">入参为对象,反射获取对象字段值</span> String builder =<span style="color: rgba(0, 0, 0, 1)"> paramToString(arg); printLog(logHandler,</span>"LogHandler-param-log====&gt;&gt; className:{},methodName:{},param:{},value:{}"<span style="color: rgba(0, 0, 0, 1)">, className,methodName, paramName,builder); } } }</span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (Exception e){ log.error(</span>"LogHandler打印入参异常"<span style="color: rgba(0, 0, 0, 1)">,e); } } </span><span style="color: rgba(0, 128, 0, 1)">/</span><span style="color: rgba(0, 128, 0, 1)"> * 返回结果日志输出 * </span><span style="color: rgba(128, 128, 128, 1)">@author</span><span style="color: rgba(0, 128, 0, 1)"> YiLiChenTu * @date 2021/8/30 15:24 * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> result * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> className * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> methodName * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> logHandler * </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)"> * </span><span style="color: rgba(128, 128, 128, 1)">@throws</span><span style="color: rgba(0, 128, 0, 1)"> *</span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> afterLog(Object result,String className,String methodName,LogHandler logHandler){ </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> { </span><span style="color: rgba(0, 0, 255, 1)">if</span> (result <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> Ret){ Ret</span>&lt;?&gt; ret = (Ret&lt;?&gt;<span style="color: rgba(0, 0, 0, 1)">) result; Object data </span>=<span style="color: rgba(0, 0, 0, 1)"> ret.getData(); logOut(data, logHandler, className, methodName); }</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> { logOut(result, logHandler, className, methodName); } }</span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (Exception e){ log.error(</span>"日志切面后置处理异常"<span style="color: rgba(0, 0, 0, 1)">,e); } } </span><span style="color: rgba(0, 128, 0, 1)">/</span><span style="color: rgba(0, 128, 0, 1)"> * 获取需要打印的字段转换字符串 * </span><span style="color: rgba(128, 128, 128, 1)">@author</span><span style="color: rgba(0, 128, 0, 1)"> YiLiChenTu * @date 2021/8/30 10:31 * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> result * </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)"> * </span><span style="color: rgba(128, 128, 128, 1)">@throws</span><span style="color: rgba(0, 128, 0, 1)"> *</span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 0, 255, 1)">private</span><span style="color: rgba(0, 0, 0, 1)"> String paramToString(Object result) { StringBuilder builder </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> StringBuilder(); builder.append(</span>"{"<span style="color: rgba(0, 0, 0, 1)">); List</span>&lt;Field&gt; fields =<span style="color: rgba(0, 0, 0, 1)"> getAllFields(result); Reflect reflect </span>=<span style="color: rgba(0, 0, 0, 1)"> Reflect.on(result); Map</span>&lt;String, Reflect&gt; fieldValueMap =<span style="color: rgba(0, 0, 0, 1)"> reflect.fields(); </span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">int</span> i = 0; i &lt; fields.size(); i++<span style="color: rgba(0, 0, 0, 1)">) { Field field </span>=<span style="color: rgba(0, 0, 0, 1)"> fields.get(i); LoggerOut loggerOut </span>= field.getAnnotation(LoggerOut.<span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)">); </span><span style="color: rgba(0, 0, 255, 1)">if</span> (loggerOut == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">){ </span><span style="color: rgba(0, 0, 255, 1)">continue</span><span style="color: rgba(0, 0, 0, 1)">; } String fieldName </span>=<span style="color: rgba(0, 0, 0, 1)"> field.getName(); Object value </span>=<span style="color: rgba(0, 0, 0, 1)"> fieldValueMap.get(fieldName).get(); </span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (isFileOrStream(value)){ </span><span style="color: rgba(0, 0, 255, 1)">throw</span> <span style="color: rgba(0, 0, 255, 1)">new</span> XXXException("不要把日志注解标注在流或文件类型的字段上"<span style="color: rgba(0, 0, 0, 1)">); } </span><span style="color: rgba(0, 0, 255, 1)">if</span> (value <span style="color: rgba(0, 0, 255, 1)">instanceof</span> Collection || value <span style="color: rgba(0, 0, 255, 1)">instanceof</span> Map || value <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> Object[]){ </span><span style="color: rgba(0, 0, 255, 1)">continue</span><span style="color: rgba(0, 0, 0, 1)">; } builder.append(QUOTES); builder.append(fieldName); builder.append(QUOTES); builder.append(</span>":"<span style="color: rgba(0, 0, 0, 1)">); builder.append(JSON.toJSONString(value)); builder.append(Symbol.COMMA); } </span><span style="color: rgba(0, 0, 255, 1)">if</span> (builder.length() &gt; 1<span style="color: rgba(0, 0, 0, 1)">){ builder.deleteCharAt(builder.length()</span>-1<span style="color: rgba(0, 0, 0, 1)">); } builder.append(</span>"}"<span style="color: rgba(0, 0, 0, 1)">); </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> builder.toString(); } </span><span style="color: rgba(0, 0, 255, 1)">private</span> List&lt;Field&gt;<span style="color: rgba(0, 0, 0, 1)"> getAllFields(Object result){ List</span>&lt;Field&gt; fields = <span style="color: rgba(0, 0, 255, 1)">new</span> ArrayList&lt;&gt;<span style="color: rgba(0, 0, 0, 1)">(); Class</span>&lt;?&gt; clazz =<span style="color: rgba(0, 0, 0, 1)"> result.getClass(); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">向上循环 遍历父类</span> <span style="color: rgba(0, 0, 255, 1)">for</span> (; clazz != Object.<span style="color: rgba(0, 0, 255, 1)">class</span>; clazz =<span style="color: rgba(0, 0, 0, 1)"> clazz.getSuperclass()) { Field[] field </span>=<span style="color: rgba(0, 0, 0, 1)"> clazz.getDeclaredFields(); </span><span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> (Field f : field) { f.setAccessible(</span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">); fields.add(f); } } </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> fields; } </span><span style="color: rgba(0, 128, 0, 1)">/</span><span style="color: rgba(0, 128, 0, 1)"> * 日志输出 * </span><span style="color: rgba(128, 128, 128, 1)">@author</span><span style="color: rgba(0, 128, 0, 1)"> YiLiChenTu * @date 2021/8/30 10:31 * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> result * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> methodLog * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> className * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> methodName * </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)"> * </span><span style="color: rgba(128, 128, 128, 1)">@throws</span><span style="color: rgba(0, 128, 0, 1)"> *</span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> logOut(Object result, LogHandler methodLog, String className, String methodName) { </span><span style="color: rgba(0, 0, 255, 1)">if</span> (result == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">){ printLog(methodLog,</span>"LogHandler-result-log====&gt;&gt; className:{},methodName:{},result:{}"<span style="color: rgba(0, 0, 0, 1)">, className,methodName, </span><span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">); </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">; } </span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (isBaseTypeOrString(result)){ </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">基本数据类型或者字符串,直接输出日志</span> printLog(methodLog,"LogHandler-result-log====&gt;&gt; className:{},methodName:{},result:{}"<span style="color: rgba(0, 0, 0, 1)">, className, methodName, JSON.toJSONString(result)); </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">; } </span><span style="color: rgba(0, 0, 255, 1)">if</span> (result <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> Map){ log.warn(</span>"LogHandler-result-log====&gt;&gt; className:{},methodName:{},返回结果为集合类型,不打印"<span style="color: rgba(0, 0, 0, 1)">, className, methodName); </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">; } </span><span style="color: rgba(0, 0, 255, 1)">if</span> (result <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> Collection){ Collection</span>&lt;?&gt; list = (Collection&lt;?&gt;<span style="color: rgba(0, 0, 0, 1)">) result; </span><span style="color: rgba(0, 0, 255, 1)">int</span> size =<span style="color: rgba(0, 0, 0, 1)"> list.size(); </span><span style="color: rgba(0, 0, 255, 1)">if</span> (size == 0 || isBaseTypeOrString(list.toArray()[0<span style="color: rgba(0, 0, 0, 1)">])){ printLog(methodLog,</span>"LogHandler-result-log====&gt;&gt; className:{},methodName:{},result:{}"<span style="color: rgba(0, 0, 0, 1)">, className, methodName, JSON.toJSONString(result)); }</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> { log.warn(</span>"LogHandler-result-log====&gt;&gt; className:{},methodName:{},返回结果为集合类型,不打印"<span style="color: rgba(0, 0, 0, 1)">, className, methodName); } </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">; } </span><span style="color: rgba(0, 0, 255, 1)">if</span> (result <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> Object[]){ Object[] arr </span>=<span style="color: rgba(0, 0, 0, 1)"> (Object[]) result; </span><span style="color: rgba(0, 0, 255, 1)">if</span> (arr.length == 0 || isBaseTypeOrString(arr[0<span style="color: rgba(0, 0, 0, 1)">])){ printLog(methodLog,</span>"LogHandler-result-log====&gt;&gt; className:{},methodName:{},result:{}"<span style="color: rgba(0, 0, 0, 1)">, className, methodName, JSON.toJSONString(result)); }</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> { log.warn(</span>"LogHandler-result-log====&gt;&gt; className:{},methodName:{},返回结果为对象数组,不打印"<span style="color: rgba(0, 0, 0, 1)">, className, methodName); } </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">; } </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">入参为对象,反射获取对象字段值</span> String builder =<span style="color: rgba(0, 0, 0, 1)"> paramToString(result); printLog(methodLog,</span>"LogHandler-result-log====&gt;&gt; className:{},methodName:{},result:{}"<span style="color: rgba(0, 0, 0, 1)">, className,methodName, builder); } </span><span style="color: rgba(0, 128, 0, 1)">/</span><span style="color: rgba(0, 128, 0, 1)"> * 判断是否为文件或者流类型 * </span><span style="color: rgba(128, 128, 128, 1)">@author</span><span style="color: rgba(0, 128, 0, 1)"> YiLiChenTu * @date 2021/8/30 10:32 * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> obj * </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)"> * </span><span style="color: rgba(128, 128, 128, 1)">@throws</span><span style="color: rgba(0, 128, 0, 1)"> *</span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">boolean</span><span style="color: rgba(0, 0, 0, 1)"> isFileOrStream(Object obj){ </span><span style="color: rgba(0, 0, 255, 1)">return</span> obj <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> InputStreamSource </span>|| obj <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> InputStreamSource[] </span>|| obj <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> File </span>|| obj <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> File[] </span>|| obj <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> InputStream </span>|| obj <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> InputStream[]; } </span><span style="color: rgba(0, 128, 0, 1)">/</span><span style="color: rgba(0, 128, 0, 1)"> * 判断是否基本数据类型或者字符串类型 * </span><span style="color: rgba(128, 128, 128, 1)">@author</span><span style="color: rgba(0, 128, 0, 1)"> YiLiChenTu * @date 2021/8/30 10:32 * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> obj * </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)"> * </span><span style="color: rgba(128, 128, 128, 1)">@throws</span><span style="color: rgba(0, 128, 0, 1)"> *</span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">boolean</span><span style="color: rgba(0, 0, 0, 1)"> isBaseTypeOrString(Object obj){ </span><span style="color: rgba(0, 0, 255, 1)">return</span> obj <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> Byte </span>|| obj <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> Short </span>|| obj <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> Integer </span>|| obj <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> Long </span>|| obj <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> Character </span>|| obj <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> Float </span>|| obj <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> Double </span>|| obj <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> Boolean </span>|| obj <span style="color: rgba(0, 0, 255, 1)">instanceof</span><span style="color: rgba(0, 0, 0, 1)"> String; } </span><span style="color: rgba(0, 128, 0, 1)">/</span><span style="color: rgba(0, 128, 0, 1)"> * 根据日志级别,打印不同级别的日志 * </span><span style="color: rgba(128, 128, 128, 1)">@author</span><span style="color: rgba(0, 128, 0, 1)"> YiLiChenTu * @date 2021/8/30 10:32 * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> logHandler * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> formatStr * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> formats * </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)"> * </span><span style="color: rgba(128, 128, 128, 1)">@throws</span><span style="color: rgba(0, 128, 0, 1)"> *</span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> printLog(LogHandler logHandler, String formatStr, Object... formats){ </span><span style="color: rgba(0, 0, 255, 1)">if</span> (logHandler.value() ==<span style="color: rgba(0, 0, 0, 1)"> LoggerLevel.INFO){ log.info(formatStr,formats); }</span><span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (logHandler.value() ==<span style="color: rgba(0, 0, 0, 1)"> LoggerLevel.DEBUG){ log.debug(formatStr,formats); }</span><span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (logHandler.value() ==<span style="color: rgba(0, 0, 0, 1)"> LoggerLevel.WARN){ log.warn(formatStr,formats); }</span><span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (logHandler.value() ==<span style="color: rgba(0, 0, 0, 1)"> LoggerLevel.TRACE){ log.warn(formatStr,formats); } } 
}

讯享网

小讯
上一篇 2025-06-08 14:48
下一篇 2025-06-06 22:02

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/205570.html