Skip to content

Latest commit

 

History

History
108 lines (78 loc) · 4.29 KB

README.md

File metadata and controls

108 lines (78 loc) · 4.29 KB

Maven Central

系统日志 Starter

v1.1.0 起基于 SpringBoot 3.0.0 编译发布,JDK 最低要求 JDK17

v1.2.0 起基于 SpringBoot 3.3.0 编译发布,JDK 最低要求 JDK17

v1.2.0 产生破坏性变更,移除 AppLogEvent 事件对象,增加 AppLogHandler 处理器对象,包名由 com.houkunlin.system.applog.starter 改为 com.houkunlin.system.applog

Maven

<dependency>
    <groupId>com.houkunlin</groupId>
    <artifactId>system-applog-starter</artifactId>
    <version>${latest.version}</version>
</dependency>

Gradle

implementation "com.houkunlin:system-applog-starter:${latest.version}"

如何使用

Controller 层使用

在 Controller 接口中使用 com.houkunlin.system.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.system.applog.AppLogInfo 对象传给其他系统

本地存储

实现 com.houkunlin.system.applog.AppLogHandler 接口并扫描到SpringBoot环境中,自行实现日志信息存储

与其他系统协同,把日志存入其他系统

依赖 Rabbitmq 环境,自行监听 Rabbitmq 消息队列数据,从 com.houkunlin.system.applog.AppLogProperties.mqQueue 队列中获取日志数据。 示例代码(仅供参考)

@RabbitListener(queues = "#{appLogProperties.mqQueue}")
public void readLog(AppLogInfo info) {
    logger.info("通过 MQ 获取到日志信息:{}", info);
}