博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
log
阅读量:6258 次
发布时间:2019-06-22

本文共 3490 字,大约阅读时间需要 11 分钟。

hot3.png

package com.beloved.log;import com.beloved.common.config.ResourceConfig;import com.beloved.common.utils.DateUtil;import com.beloved.common.utils.IpUtil;import com.beloved.common.utils.JacksonUtil;import com.beloved.common.utils.ResourcesUtil;import com.beloved.constant.MessageConstant;import com.beloved.log.annotation.LogTitle;import com.beloved.product.service.impl.ProductServiceImpl;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.reflect.MethodSignature;import org.junit.Ignore;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.core.annotation.AnnotationUtils;import javax.servlet.http.HttpServletRequest;import java.lang.reflect.Method;/** *  * 

Title: LogInterceptor

*

Description: 系统统一日志处理

* @author HU MING * @date 2016年4月14日下午2:57:30 * @version 1.0 */public class LogInterceptor { public static final Integer REMARK_MAX =2800; //日志备注最大长度 private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(ProductServiceImpl.class); //@Autowired private HttpServletRequest request; /** * @param jp * @throws Exception */ public void doAfter(JoinPoint jp) throws Exception{ Method method = ((MethodSignature)jp.getSignature()).getMethod(); //Method method = ClassUtil.findMethod(jp.getThis().getClass(),jp.getSignature().getName(), jp.getArgs()); LogTitle title = AnnotationUtils.findAnnotation(method,LogTitle.class); if(title==null) { return; } if(title.log()==true){ String message = ResourcesUtil.getValue(ResourceConfig.MESSAGE, MessageConstant.OPERATION_LOG_INFO+"" ,new Object[]{
"test", DateUtil.currentTimeformatDate2ChinaTime24HDetail(),title.value(), IpUtil.getClientIp(request) ,getKey(jp)}); LOGGER.debug(message); } }/** * * @param jp * @param * @throws Exception */public void doThrowing(JoinPoint jp, Throwable e) throws Exception{ Method method = ((MethodSignature)jp.getSignature()).getMethod();//获得目标方法 LogTitle title = AnnotationUtils.findAnnotation(method,LogTitle.class);//获得目标方法上的注解 if(title==null) return; if(title.log()==true){ String message = ResourcesUtil.getValue(ResourceConfig.MESSAGE, MessageConstant.OPERATION_LOG_EX+"" ,new Object[]{
"test", DateUtil.currentTimeformatDate2ChinaTime24HDetail(),title.value(), IpUtil.getClientIp(request) ,getKey(jp),e.getClass().getName(),e.getMessage()}); LOGGER.warn(message); }}// 生成规则 包名+类名+方法名+参数public String getKey(JoinPoint jp){ //StringBuiter StringBuilder key = new StringBuilder(); //包名+ 类名 cn.itcast.core.serice.product.ProductServiceImpl.productList String packageName = jp.getTarget().getClass().getName(); key.append(packageName); // 方法名 String methodName = jp.getSignature().getName(); key.append(".").append(methodName); //参数(多个) Object[] args = jp.getArgs(); key.append("("); for(Object arg : args){ String str = null; try{
//能转JSON str = JacksonUtil.obj2Json(arg); }catch(Exception e){
//不能转JSON toString str =arg.toString(); } //参数 key.append(str).append(","); } key.replace(key.length()-1, key.length(), ")"); return key.toString();} private void log(){ }}

转载于:https://my.oschina.net/goudingcheng/blog/855846

你可能感兴趣的文章
Android对话框-中篇-之建立自己的对话框
查看>>
华为交换机VRP用户界面配置及Telnet登录实验
查看>>
作为一个程序员我最大的遗憾
查看>>
《SolidWorks 2012中文版从入门到精通》一6.5 综合实例——斜齿圆柱齿轮
查看>>
storm集群的监控
查看>>
RHCE 6.0学习笔记-2 RHEL 6 使用光盘配置本地YUM源
查看>>
Mongodb定期备份
查看>>
Confluence 6 数据库设置
查看>>
刨根问底-struts-怎么加载配置的相应的信息
查看>>
解决mysql数据库大小写敏感问题
查看>>
《.NET最佳实践》与Ext JS/Touch的团队开发
查看>>
jsp页面组成
查看>>
LCS记录
查看>>
C++开源跨平台类库集
查看>>
everything搜索工具小技巧
查看>>
一个 Sql语句优化的问题- STATISTICS 统计信息
查看>>
你不知道的KVO的内部实现
查看>>
转】MyEclipse10安装Log4E插件
查看>>
windows server2012r2 安装NET Framework 3.5
查看>>
vss整合配置连接到Myeclipse中以及中文配置
查看>>