千家信息网

如何用SpringCloud Alibaba实现业务日志组件

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"如何用SpringCloud Alibaba实现业务日志组件",在日常操作中,相信很多人在如何用SpringCloud Alibaba实现业务日志组件问题上存在疑惑,小编查阅了各式资
千家信息网最后更新 2026年11月01日如何用SpringCloud Alibaba实现业务日志组件

这篇文章主要介绍"如何用SpringCloud Alibaba实现业务日志组件",在日常操作中,相信很多人在如何用SpringCloud Alibaba实现业务日志组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何用SpringCloud Alibaba实现业务日志组件"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

概述

在单体项目中如果我们需要记录操作日志一般会通过如下手段实现:

  • 建立一个自定义注解,标注业务操作类型

  • 通过AOP组装日志实体,完成日志的收集工作

但是在微服务架构中我们不可能每个服务都写一个自定义注解,再写一个AOP,这很明显违反了 Don’t repeat yourself 精神。所以这时候我们一般都会建立一个公共的组件,在公共组件中完成日志的收集,后端服务只需要引入这个公共的组件即可。

SpringBoot Starter

要实现上述的功能我们需要借助SringBoot Starter来实现,SpringBoot 的一大优势就是Starter,通过Starter我们可以封装公共的业务逻辑以及参数的初始化,如果你在进行微服务开发,Starter的编写是一定要掌握的。

这里我们简单提一下SpringBoot Starter实现自动化配置的流程

  • spring-boot启动的时候会找到starterjar包中的resources/META-INF/spring.factories文件,根据spring.factories文件中的配置,找到需要自动配置的类,xxxAutoConfigure

  • 通过xxxAutoConfigure上的注解@EnableConfigurationProperties将当前模块的属性绑定到「Environment」 上(若有)。

  • 通过xxxAutoConfigure中定义的bean自动装配到IOC容器中。

实战

过程如下:

首先我们在项目中建立一个starter的module,如cloud-component-logging-starter

编写配置类SysLogAutoConfigure

@Configuration public class SysLogAutoConfigure {      @Bean     public SysLogAspect controllerLogAspect(){         return new SysLogAspect();     }  }

在SysLogAutoConfigure中我们注入了一个日志切面SysLogAspect,由于日志收集工具不需要额外配置属性,所以我们也就不需要定义属性配置类了。

自定义日志注解 SysLog

@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface SysLog {  /**   * 日志内容   * @return {String}   */  String value(); }

定义日志切面 SysLogAspect

@Aspect public class SysLogAspect {      private final Logger log = LoggerFactory.getLogger(this.getClass());      @Pointcut("@annotation(com.javadaily.component.logging.annotation.SysLog)")     public void logPointCut() {      }      @Around("logPointCut()")     public Object around(ProceedingJoinPoint pjp) throws Throwable {         MethodSignature signature = (MethodSignature) pjp.getSignature();         Method method = signature.getMethod();        //类名         String className = pjp.getTarget().getClass().getName();         //方法名         String methodName = signature.getName();              SysLog syslog = method.getAnnotation(SysLog.class);         //操作         String operator =syslog.value();          long beginTime = System.currentTimeMillis();          Object returnValue = null;         Exception ex = null;         try {             returnValue = pjp.proceed();             return returnValue;         } catch (Exception e) {             ex = e;             throw e;         } finally {             long cost = System.currentTimeMillis() - beginTime;             if (ex != null) {                 log.error("[class: {}][method: {}][operator: {}][cost: {}ms][args: {}][发生异常]",                         className, methodName, operator, pjp.getArgs(), ex);             } else {                 log.info("[class: {}][method: {}][operator: {}][cost: {}ms][args: {}][return: {}]",                         className, methodName, operator, cost, pjp.getArgs(), returnValue);             }         }      } }

上面的切面表示,对于使用了@SysLog注解的方法自动进行日志收集,将日志输入到日志文件。

在resource/META-INF目录下建立spring.factories文件,加载配置类SysLogAutoConfigure

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.javadaily.component.logging.configure.SysLogAutoConfigure

在微服务中引入日志组件

     com.jianzh6.cloud     cloud-component-logging-starter     1.0.0 

在需要进行日志收集的方法上添加@SysLog注解

@SysLog("查找用户") public ResultData getByCode(@PathVariable(value = "accountCode") String accountCode){     log.warn("get account detail,accountCode is :{}",accountCode);      SecurityUser securityUser = SecurityUtils.getUser();     log.info(securityUser);      AccountDTO accountDTO = accountService.selectByCode(accountCode);     return ResultData.success(accountDTO); }

到此,关于"如何用SpringCloud Alibaba实现业务日志组件"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

日志 组件 配置 业务 注解 服务 文件 方法 学习 切面 属性 更多 项目 帮助 实用 明显 接下来 优势 内容 功能 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 精品咖啡豆 博彦科技互联网金融 上海睿民互联网科技有限公司 互联网科技网 互联网巨头科技公司 科技信息互联网 互联网养老 桔豆科技 广州优美互联网科技 新华互联网科技2019 团飞科技与伯堂互联网服务平台 南平创想时代互联网科技有限公司 武汉健翔互联网络科技有限公司 互联网行业科技股 深圳无忧互联网科技 中天科技中国工业互联网 全球科技与互联网公司市值变化 云鲸互联网络科技有限公司 美国五大互联网科技公司市值多少 瑞安市蟠桃会互联网科技有限公司 互联网 科技节活动 微视频大赛 互联网电商科技 金融科技创新监管互联网金融 朗涯互联网科技 银川新华互联网科技学校地址 哈尔滨新华互联网科技学院 温州喔噻互联网科技有限公司 常德市电业局互联网科技部 移动互联网科技股 互联网金融科技公司干啥的 互联网科技创业计划的风险分析
0