日志系统
基本介绍
- 提供采集、存储日志。分为三种类型,分别为接口日志、错误日志、通用日志。
- 实现方式通过 springBoot 中事件发布与订阅的方式进行监听,并异步发送时间等信息,减少日志操作的性能损耗。
接口日志
- 接口上使用@ApiLog 即可
- 信息后会保存到接口日志 cbb_sys_log_api
java
/**
* 删除用户
* @param ids id列表
* @return {@link R<Boolean>}
*/
@ApiLog(value = "删除用户")
@PostMapping("/delete")
@ApiOperation(value = "删除用户", notes = "传入id数组")
public R<Boolean> delete(@RequestBody List<Integer> ids) {
return R.status(userService.removeUserByIds(ids));
}
错误日志
- 接入日志系统,就会自动收集系统抛出的错误。
- 通过继承 DefaultErrorAttributes 类,重写 getErrorAttributes 方式实现。
- 收集错误信息后会保存到错误日志 cbb_sys_log_error
通用日志
- 通过代码的方式实现记录日志
- 信息后会保存到接口日志 cbb_sys_log_usual
java
@RequestMapping("/index/test")
@ApiLog()
public R<Object> indexLogin() {
// 发布一个事件测试
cbbLogger.error(String.format("业务id: %s", DateUtil.current()) , "测试发布事件");
cbbLogger.warn(String.format("业务id: %s", DateUtil.current()), "测试发布事件");
cbbLogger.debug(String.format("业务id: %s", DateUtil.current()), "测试发布事件");
cbbLogger.info(String.format("业务id: %s", DateUtil.current()), "测试发布事件");
int i = 0 / 0;
return R.data(JSONUtil.createObj().set("正常响应", "正常响应"));
}
java
package com.kyny.cbb.core.log.logger;
import com.kyny.cbb.core.log.publisher.UsualLogPublisher;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
/**
* 日志工具类
*
*/
@Slf4j
public class CbbLogger implements InitializingBean {
@Value("${spring.application.name}")
private String serviceId;
public void info(String id, String data) {
UsualLogPublisher.publishEvent("info", id, data);
}
public void debug(String id, String data) {
UsualLogPublisher.publishEvent("debug", id, data);
}
public void warn(String id, String data) {
UsualLogPublisher.publishEvent("warn", id, data);
}
public void error(String id, String data) {
UsualLogPublisher.publishEvent("error", id, data);
}
@Override
public void afterPropertiesSet() throws Exception {
log.info(serviceId + ": CbbLogger init success!");
}
}