Skip to content

操作日志

记录接口操作日志和异常告警提醒

告警提醒

当系统发生异常时,自动触发通知,把异常错误消息推送给接收端,目前支持钉钉和企业微信接收异常消息,提前发现系统问题。

演示文档

服务端使用说明

引用依赖

引入报警服务端依赖和注册中心依赖

mysql存储消息服务

xml
<dependency>
    <groupId>com.wueasy.cloud</groupId>
    <artifactId>wueasy-operation-log-server-db</artifactId>
    <version>最新版本</version>
</dependency>

需要引入注册中心客户端

xml
<dependency>
  <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2022.0.0.0</version>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2022.0.0.0</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>

修改配置文件

spring应用名称必须为 wueasy-operation-log

yaml
spring:
  application:
    name: wueasy-operation-log

注册中心配置

nacos为例,可以使用其他配置中心

yaml
spring:
  application:
    name: wueasy-operation-log #应用名称
  profiles:
    active: ${SPRING_PROFILES_ACTIVE:dev} #环境配置
  cloud: 
    nacos: 
      server-addr: ${NACOS_SERVER_ADDR:47.97.103.155:8848} #nacos配置地址
      username: ${NACOS_USERNAME:example} #Nacos用户名
      password: ${NACOS_PASSWORD:example} #Nacos密码
      config: #配置中心配置
        namespace: ${spring.profiles.active} #命名空间
        group: ${NACOS_GROUP:example}
        file-extension: yaml #文件格式
        enabled: false
      discovery:  #注册中心配置
        namespace: ${spring.profiles.active} #命名空间
        group: ${NACOS_GROUP:example}
        enabled: true

数据库配置

保存报警消息记录,可以选择mysql

yaml
spring: 
  datasource:
    url: jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 123456
    hikari:
      minimum-idle: 5 #池中最小空闲连接数量,默认值10
      idle-timeout: 30000 #一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10s
      maximum-pool-size: 15 # 池中最大连接数(包括空闲和正在使用的连接)
      auto-commit: true # 是否自动提交池中返回的连接
      pool-name: HikariCP # 连接池的名字
      max-lifetime: 120000 # 连接池中连接的最大生命周期
      connection-timeout: 30000 # 连接超时时间。默认值为30s
      connection-test-query: SELECT 1 # 测试连接
  data:
    redis:
      database: 0
      host: 127.0.0.1
      port: 6379
      password: 123456
      timeout: 30000
      lettuce:
        pool:
          max-active: 100 # 连接池最大连接数(使用负值表示没有限制) 默认 8
          max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
          max-idle: 10 # 连接池中的最大空闲连接 默认 8
          min-idle: 0 # 连接池中的最小空闲连接 默认 0

mybatis-plus:
  mapper-locations: classpath*:mybatis/**/*.xml

报警推送配置

只能配置推送到一个服务(钉钉或企业微信),可以配置多个群机器人(提高并发量)

robot-type:机器人类型,可选:dingtalkweixin

yaml
wueasy:
  operation-log:
    enabled: false
  request-log:
    enabled: false
  alarm:
    enabled: true
    timeout-enabled: true
    timeout: 2s
    robot-type: dingtalk 
    dingtalk-robots:
    - webhook: https://oapi.dingtalk.com/robot/send?access_token=123
      secret: 123

微服务使用说明

全局配置

可以通过全局配置启用日志记录服务,默认启用

yaml
wueasy:
  operation-log:
    enabled: true

注解说明

  • @OperationLog 操作日志注解,需要在方法上
    • name 接口名称
    • author 作者名称
    • descript 描述
    • content 自定义内容,示例:'欢迎登录系统,'+#p0.accountNo+',登录ip:'+#user.ip,可以使用#p0获取参数,使用#user获取用户信息
  • @OperationLogParam 报警参数注解,需要在参数上,enabled 是否启用,禁用后将不会输出参数

使用示例

  • @OperationLog(name = "测试接口",author = "fallsea"): 给方法设置报警信息
  • @OperationLogParam(enabled = false) HttpServletRequest request:禁止某些参数输出日志,有些参数是不能转换的,需要设置
java
@OperationLog(name = "测试接口",author = "fallsea")
@OperationLog(name = "登录",content = "'欢迎登录系统,'+#p0.accountNo+',登录ip:'+#user.ip")
public Result<String> test(@RequestParam("name")String name,@OperationLogParam(enabled = false) HttpServletRequest request,String name2)
{
  return new Result<String>().setData(name);
}