栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

日志在项目中的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

日志在项目中的使用

啥是日志

logback log4j 日志啥用?展示记录代码的运行情况。用于经验总结,对项目的分析和异常调错。

在项目中日志分为两种:

  • 代码的日志,通过log4j logback等技术打印代码执行情况

  • 业务的日志,记录的是用户的行为信息,用户在系统中什么时间什么地点执行了什么方法看了什么数据。通过对这些信息的记录,可以分析用户,得到用户的喜好,做智能推荐。

    后台管理员 zhangsan 晚上10点 删除了一个上师

SpringBoot项目中Logback日志的使用 SpringBoot Logback的配置

之前:在项目中引入 logback.xml

SpringBoot默认集成Logback,意味着在SpringBoot项目中使用logback 可以不要配置文件

  1. 如果有 删除 logback.xml

  2. 在application配置文件中写入日志的配置

    日志等级:debug – info – warn – error

    从低到高 等级越高打印信息越少

    如果在 application 配置文件中有日志配置

    并且在项目中还存在 logback.xml 项目在执行的时候 会以logback.xml中的配置为准

在自己的代码中打印日志

学习怎么打印自己代码的日志?例如:打印Controller代码的日志,打印业务层代码的日志?

日志打印的意义

在实际的开发中 用来取代打印语句 System.out.println("查询菜单数据");

打印语句的问题:

  1. 代码上线之后 调试用的打印语句 需要全部删除
  2. 怎么删除?手动注释 过了几天要在代码的基础上继续开发 调试代码需要打印语句 注释再开吗?

用到了日志打印

日志打印的优点:

  1. 信息全面
  2. 可以根据 日志等级配置 决定要打印哪些内容
    1. 开发的时候 使用debug
    2. 上线的之后 info --> error

以业务层为例

日志打印的使用步骤(方法一):

  1. 开启要打印日志的包的 日志等级

  1. 在要打印日志的类中创建 日志对象

private Logger logger = LoggerFactory.getLogger(CmfzMenuServiceImpl.class);
  1. 在代码中使用日志对象 打印自己的日志信息

  1. 效果

**日志打印的使用步骤(方法二):**注解的方式

  1. 开启要打印日志的包的 日志等级

  1. 在要打印日志的类上加注解

  1. 在代码中直接使用日志打印

日志打印的细节处理:

  • 打印对象类型 需要手动toString

  • 占位符的使用

项目中管理员日志的记录

需求:记录管理员在后台项目的操作信息:谁 什么时间 什么地点 查看了什么数据 做了什么操作

1 确定要记录什么数据

CREATE TABLE `cmfz_log` (
  `log_id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `log_date` datetime DEFAULT NULL,
  `log_ip` varchar(255) DEFAULT NULL,
  `log_type` varchar(255) DEFAULT NULL,
  `log_content` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`log_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2 确定什么技术来实现
  1. 在用户操作的时候 获取日志信息
  2. 把日志信息添加数据库

使用aop实现

注解式AOP

之前通过xml配置的方式

通过注解的方式【通过代码的方式 类似配置类】

实现aop的基本步骤

  1. 写增强
  2. 确定切入点
  3. 织入

注解式AOP的步骤

  1. 创建一个切面类

  1. 在类中创建一个增强方法 通过注解确定增强类型

  1. 在注解中配置切入点

重点:掌握常见aop注解

自定义注解

  1. 创建注解类


2. 配置注解的元注解

  1. 配置自定义注解的属性

重点:元注解

3 日志记录代码实现
  1. 创建自定义注解

  1. 创建日志记录切面类

  2. 写日志记录的增强方法 确定增强类型

     
        @After()
        public void logAfter(JoinPoint joinPoint){
            CmfzLog cmfzLog = new CmfzLog();
            
    //        获取日期
            cmfzLog.setLogDate(new Date());
    
    //        获取ip
            
            ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
            HttpServletRequest request = requestAttributes.getRequest();
            String ip = IPKit.getIpAddrByRequest(request);
            cmfzLog.setLogIp(ip);
    
    //        获取用户名
            CmfzAdmin admin = (CmfzAdmin) request.getSession().getAttribute("admin");
    
            if (admin == null){
                cmfzLog.setUsername("root");
            }else {
                cmfzLog.setUsername(admin.getUsername());
            }
    
    //        操作类型和操作内容  aop不同的方法获取到的类型和内容不同
            
            MethodSignature signature = (MethodSignature) joinPoint.getSignature();
    
            Method method = signature.getMethod();
    //        参数为 要获取的注解的类对象
            LogAnnotation annotation = method.getAnnotation(LogAnnotation.class);
    
            cmfzLog.setLogType(annotation.type());
    
            cmfzLog.setLogContent(annotation.value());
    
            
            cmfzLogDao.insert(cmfzLog);
        }
    
  3. 配置增强的切入点

    需要在增强中获取自定义注解的值,意味着只能切有注解的方法,通过 切注解 的方式实现

  1. 在任何一个想要记录日志的方法上 加注解 就可以自动的记录日志

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/930495.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号