java后台注解式日志,利用注解记录日志
来源:互联网 发布:淘宝卖家手机号码采集 编辑:程序博客网 时间:2024/05/22 00:48
日志记录简化,只需要在action或者controller的方法上加logging注解即可。注解:@Logging(description = "{username}登录"),description是注解内容,{}中为动态参数,是传入该方法中的指定po的属性。
注解类代码:
package cn.com.annotation;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/** * 日志注解 * @author ZhangShaobo * @date 2017-09-04 */@Documented@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public @interface Logging {String description();}
具体的日志实现类,该类中loginfo方法需要在拦截器中调用。
package cn.com.util;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.regex.Matcher;import java.util.regex.Pattern;import org.apache.poi.ss.formula.functions.T;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import cn.com.annotation.Logging;/** * 日志注解的具体实现类 * @author ZhangShaobo * @date 2018-09-04 */public class LogAnnoUtil {private static Logger log = LoggerFactory.getLogger(LogAnnoUtil.class);/** * 根据注解记录日志 * @param t action对象 * @param methodName 调用的action方法名称 * @param map 参数map */public static <T> void loginfo(T t, String methodName, Map map){Method [] methods = t.getClass().getDeclaredMethods(); for (final Method m : methods) { if (m.getName().equals(methodName)) { if(m.isAnnotationPresent(Logging.class)){ String desc = m.getAnnotation(Logging.class).description(); List<String> list = descFormat(desc); for (String s : list) {String value = map.get(s).toString();desc = desc.replace("{"+s+"}", value);} // 暂时只是输出到了控制台,具体需要存库或者存缓存,需要改这段代码 log.info(desc); }}}}/** * 获取日志信息中的动态参数,然后替换 * @param desc * @return */private static List<String> descFormat(String desc){List<String> list = new ArrayList<>();Pattern pattern = Pattern.compile("\\{([^\\}]+)\\}"); Matcher matcher = pattern.matcher(desc); while(matcher.find()){ String t = matcher.group(1); list.add(t); }return list;}}
拦截器中写调用,以上代码实现的是在struts框架中用注解记录日志,springmvc或者springboot需要适当更改代码。有好的建议或者有不明白的地方欢迎评论沟通!
阅读全文
2 0
- java后台注解式日志,利用注解记录日志
- 利用SpringAOP+注解记录日志
- 使用AOP与注解记录Java日志
- 使用AOP与注解记录Java日志
- SpringMVC利用AOP实现自定义注解记录日志
- SpringMVC利用AOP实现自定义注解记录日志
- SpringMVC利用AOP实现自定义注解记录日志
- SpringMVC利用AOP实现自定义注解记录日志
- SpringMVC利用AOP实现自定义注解记录日志
- SpringMVC利用AOP实现自定义注解记录日志
- SpringMVC利用AOP实现自定义注解记录日志
- SpringMVC利用AOP实现自定义注解记录日志
- Spring注解实现日志记录
- 利用spring AOP注解实现日志管理
- aop+自定义注解实现操作日志记录
- aop+自定义注解实现操作日志记录
- 通过注解实现记录日志的功能
- Spring AOP 自定义注解记录操作日志
- border,margin,padding属性之间的区别
- kylin2.0 安装与 Spark2.1 集成
- 解题报告:HDU_6189 Law of Commutation (找规律)
- Thrift 0.9.3 Windows下安装
- IOError: No translation files found for default language zh-cn.
- java后台注解式日志,利用注解记录日志
- 中国大学MOOC·Python网络爬虫与信息提取_思考小结(一)
- 局部边缘保持滤波(LEP)高动态范围图像HDR压缩 matlab程序(二)
- read与fread的使用
- Elasticsearch建立多机集群
- QT数据库
- SpringCloud 笔记 (三)---- Eureka通信过程
- Android性能优化之App应用启动分析与优化
- LBP特征