Maven
<dependency>
<groupId>com.houkunlin</groupId>
<artifactId>system-applog-spring-boot4-starter</artifactId>
<version>${latest.version}</version>
</dependency>Gradle
implementation "com.houkunlin:system-applog-spring-boot4-starter:${latest.version}"在 Controller 接口中使用 com.houkunlin.applog.AppLog 注解,示例如下:
@AppLog("有人获取了用户信息")
public Json getUser(){
return new Json()
}使用示例:
@AppLog("接口操作说明,方法名称:#{method.name}")@AppLog("接口操作说明,方法参数:#{args[0].toString()}")@AppLog("接口操作说明,方法参数:#{#id}")其中的 id 为方法参数名称@AppLog("接口操作说明,当前对象:#{target.toString()}")@AppLog("接口操作说明,当前对象class:#{targetClass.getName()}")@AppLog("接口操作说明,返回结果:#{result?.toString()?:'无返回值'}")
日志内容模板语法可自行定义,自行定义时请实现 TemplateParser.java 接口, 默认提供的 TemplateParserDefaultImpl.java 支持 SpEL 表达式(模板)解析。
AppLog 参数列表:
| 字段 | 类型 | 说明 | SpEL支持 |
|---|---|---|---|
| value | String | 日志内容 | 是 |
| errorValue | String | 发生错误时的日志内容,默认为与 value 内容一致,但在后面加了 exception.getMessage() 的内容 | 是 |
| type | String | 操作类型(类型需要自行传入) | 否 |
| createdBy | String | 日志创建人 | 是 |
示例代码:src/test/java/com/houkunlin/system/applog/AppLoggerTest.java
public class Test {
// 获取应用日志对象
public static final AppLogger APP_LOGGER = AppLoggerFactory.getLogger("test");
public void test() {
// 像是使用 SLF4j 日志一样调用接口
APP_LOGGER.log("Hello World"); // Hello World
APP_LOGGER.log("Hello World {}", 12); // Hello World 12
APP_LOGGER.log("Hello World {}", new RuntimeException("ERROR")); // Hello World ERROR
APP_LOGGER.logBiz("bizId", "Hello World"); // bizId:bizId; Hello World
APP_LOGGER.logBiz("bizId", "Hello World {}", 12); // bizId:bizId; Hello World 12
APP_LOGGER.logBiz("bizId", "Hello World {}", new RuntimeException("ERROR")); // bizId:bizId; Hello World ERROR
}
}日志会封装成 com.houkunlin.applog.AppLogInfo 对象传给其他系统
实现 com.houkunlin.applog.AppLogHandler 接口并扫描到SpringBoot环境中,自行实现日志信息存储
依赖 Rabbitmq 环境,自行监听 Rabbitmq 消息队列数据,从 com.houkunlin.applog.AppLogProperties.mqQueue 队列中获取日志数据。
示例代码(仅供参考)
@RabbitListener(queues = "#{appLogProperties.mqQueue}")
public void readLog(AppLogInfo info) {
logger.info("通过 MQ 获取到日志信息:{}", info);
}