主题
操作日志
记录接口操作日志和异常告警提醒
告警提醒
当系统发生异常时,自动触发通知,把异常错误消息推送给接收端,目前支持钉钉和企业微信接收异常消息,提前发现系统问题。
服务端使用说明
引用依赖
引入报警服务端依赖和注册中心依赖
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
:机器人类型,可选:dingtalk
,weixin
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);
}