it4alla / scalog

🔥 simple communal automatic log comonent 🔥
Apache License 2.0
10 stars 7 forks source link

scalog

simple communal automatic log

1.功能

🔥🔥记录接口请求日志🔥🔥

为项目相关分析提供数据支撑。此日志信息有别于项目中的log日志,这里只是记录web接口的请求日志。

目前项目中大多数方案是用切面或者拦截器配合注解来做,但是会存在一个问题:每个web项目都要单独实现或者copy一份此逻辑。

考虑到现在项目都微服务化,大量的微服务都需要记录请求日志,但是没有找到符合我们需求的轻量级的好的实现方案,因此有了此项目。

收集的数据,我们可以接入公司开发的相关信息展示系统,也可以找个可视化工具,比如Grafana,效果如下:

1 2 3

scalog的优势:

一个简单的功能,在使用上,应该也是没有成本的,但是简单的功能,也可以做的更加通用,易用,可靠,可拓展,可选择,零成本,零侵入。

目前支持4种策略:

也可以选择禁用:scalog.enable=false

目前支持3种数据库:

2.使用

如果公司有私有仓库,可修改pom.xml中的仓库地址,推送到私有仓库。其他项目直接引入依赖即可。(正在考虑直接发布到maven仓库,但是有点麻烦)

2.1创建记录表

在项目数据库中创建数据库表

2.3配置文件

提供配置项如下:

示例:

scalog:
  enable: true
  level: all
  needResult: false
  countryName: 中国
  groupName: 谷歌集团
  organizationName: 谷歌开源组织
  companyName: 谷歌杭州分公司
  projectName: 棱镜项目
  db: postgresql
  url: jdbc:postgresql://xxx.xxx.xxx.xxx:5432/xxx?stringtype=unspecified
  username: xxxx
  password: xxxxx
  driver-class-name: org.postgresql.Driver
  # 使用druid数据源
  type: com.alibaba.druid.pool.DruidDataSource

2.4使用

上述步骤完成后,接口请求记录已经可以正常记录。 但是,以下几个字段,是可选项,切面无法拿到,默认为空:

  `module_name` char(200) DEFAULT NULL COMMENT '模块名称',
  `function_name` char(500) DEFAULT NULL COMMENT '功能名称',
  `remark` char(200) DEFAULT NULL COMMENT '备注',

由于切面无法拿到,但是项目中需要定制化记录,所以提供了@LogInfo注解来记录,例如:

    /**
     * 返利单价列表
     * web-授信管理-经销商返利单价列表
     * @param pageSize
     * @param pageNum
     * @return
     */
    @LogInfo(moduleName = "授信模块",functionName = "返利单价列表",remark = "获取返利单价列表")
    @GetMapping(value = "list")
    public ObjectRestResponse list(Integer pageSize,Integer pageNum){
        FspPageInfo fspPageInfo = rebateServiceImpl.list(pageSize,pageNum);
        return new ObjectRestResponse().data(fspPageInfo);
    }

3.相关信息

userId等相关的用户信息,不同微服务获取方式可能不一样。目前处理方式为统一从请求头中获取。 前端或者移动端请求头中统一添加:user_id或者userId。 后期会对请求头信息进行拓展。目前只接收userId。