首页 / 日志 / 在SSM框架中定义日志信息
在SSM框架中定义日志信息
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在SSM框架中定义日志信息,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4181字,纯文字阅读大概需要6分钟。
内容图文
![在SSM框架中定义日志信息](/upload/InfoBanner/zyjiaocheng/1172/7a185d60a16041bdbdada2a509003ef3.jpg)
一、首先定义一个log的日志(TLog.java);
package entity; import java.util.Date; public class TLog { private Integer id; private String type; private Integer operator; private Date createtime; private String data; private String ip; private String content; public Integer getId() { return id; } publicvoid setId(Integer id) { this.id = id; } public String getType() { return type; } publicvoid setType(String type) { this.type = type; } public Integer getOperator() { returnoperator; } publicvoid setOperator(Integer operator) { this.operator = operator; } public Date getCreatetime() { return createtime; } publicvoid setCreatetime(Date createtime) { this.createtime = createtime; } public String getData() { return data; } publicvoid setData(String data) { this.data = data; } public String getIp() { return ip; } publicvoid setIp(String ip) { this.ip = ip; } public String getContent() { return content; } publicvoid setContent(String content) { this.content = content; } }
二、用自定义注解来来定义接口(Log.java);
@Target({ElementType.METHOD})//指定注解添加到method方法上 @Retention(RetentionPolicy.RUNTIME)//指定作用域为运行时public @interface Log { //定义接口方法,使用接口时,会当做注解的属性 String description() default""; //日志操作类型,删除,修改,登录,查询,新增 LogType logType(); }
三、利用枚举来定义日志的操作(LogType.java);
/* * * 枚举类,用来定义有限个的对象 */ public enum LogType { LOGIN( " 1 "),INSERT("2"),DELETE("3") ,SELECT("4"),UPDATE("5"),PASSWORD("6"); //定义类中的属性和方法,跟写其他类一样private String type; LogType(String type){ this.type=type; } public String getType() { return type; } }
四、分别在mapper层和service层定义insert方法;
mapper层: LogMapper.java public interface LogMapper { int insert(TLog tLog); } LogMapper.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="mapper.LogMapper"> <insert id="insert"> insert into T_LOG(id, type, operator, createtime, data, ip, content) values (SEQ_T_LOG.nextval,#{type},#{operator},#{createtime},#{data},#{ip},#{content}) </insert> </mapper> service层: LogService.java publicinterface LogService { int insert(TLog tLog); } LogServiceImpl.java @Service publicclass LogServiceImpl implements LogService{ @Autowired private LogMapper logMapper; @Override publicint insert(TLog tLog) { return logMapper.insert(tLog); } }
五、我们最后写一个切面的类来实现我们的日志(LogAspect.java);
@Component @Aspect public class LogAspect2 { @Autowired private LogService logService; // 定义切入点,使用注解的方法 @Pointcut("@annotation(aop.Log)") publicvoid logPointCut(){ } @Before("logPointCut()") publicvoid log(JoinPoint joinPoint) throws JsonProcessingException { //获取日志信息,封装成日志对象,并保存到数据库 TLog tLog = new TLog(); //获取到方法签名对象 MethodSignature signature= (MethodSignature) joinPoint.getSignature(); //通过方法签名对象获取方法对象 Method method = signature.getMethod(); //获取方法上面的特定注解 Log logAnnotation = method.getAnnotation(Log.class); //描述信息 String description = logAnnotation.description(); //日志类型 LogType logType = logAnnotation.logType(); //获取到日志类型对应的数字,存入tLog对象中 tLog.setType(logType.getType()); //设置操作时间 tLog.setCreatetime(new Date()); //获取request对象 ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = requestAttributes.getRequest(); //获取客户端IP地址 String ip = request.getRemoteUser(); tLog.setIp(ip); //获取请求数据 Map<String, String[]> parameterMap = request.getParameterMap(); //创建JackSon的ObjectMapper对象,通过该对象将java对象转换成json ObjectMapper objectMapper = new ObjectMapper(); //将java对象转换成json字符串 String requestDataJsonStr = objectMapper.writeValueAsString(parameterMap); //将json字符串转换成java对象 // HashMap map=objectMapper.readValue(s, HashMap,class); // String content=description+",请求数据:"+requestDataJsonStr; tLog.setContent(description); //设置请求数据 tLog.setData(requestDataJsonStr); if (!(LogType.LOGIN ==logType)){//如果不是登录操作,获取操作人信息 Admin admin = (Admin) request.getSession().getAttribute("admin"); tLog.setOperator(admin.getId()); } //将日志信息保存到数据库 logService.insert(tLog); } }
六、为了测试结果,我们可以在事先写好的增删改查,登录或修改密码的方法上加上对应的注解,然后我们执行有注解的相关操作即可,就可以在控制台看到相应的日志信息,或者在数据库中看到相应的日志信息;
1)加入的注解;
2)控制台的相关信息;
3)数据库表中页面;
原文:https://www.cnblogs.com/xie-qi/p/13258267.html
内容总结
以上是互联网集市为您收集整理的在SSM框架中定义日志信息全部内容,希望文章能够帮你解决在SSM框架中定义日志信息所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。