ContiNew

AOP 版

日志模块的 AOP 实现,以 @Log 注解为切点,按方法或类精细声明记录范围,与 Spring Doc 注解联动。

AOP 版以 @Log 注解为切点,在方法执行完成(含异常)后记录一条日志。适合只关心关键操作、希望日志量可控的场景。

引入依赖

<dependency>
    <groupId>top.continew.starter</groupId>
    <artifactId>continew-starter-log-aop</artifactId>
</dependency>

使用 @Log 注解

@Log(module = "系统管理", value = "新增用户")
@PostMapping
public Resp<Void> add(@Valid @RequestBody UserReq req) {
    // 记录内容:请求与响应信息、耗时、异常信息等
}

@Log 注解属性(top.continew.starter.log.annotation.Log):

属性说明
value日志描述(仅用于方法上),优先级高于 @Operation(summary)
module所属模块(方法或类上),优先级:方法上的 @Log(module) > 类上的 @Log(module) > @Tag(name)
includes在全局配置基础上扩展包含信息
excludes在全局配置基础上减少包含信息
ignore是否忽略日志记录(方法或类上,默认 false)

标注 @Hidden 或 @Operation(hidden = true) 的接口不会被记录。

配置

前缀 continew-starter.log,与拦截器版共用(完整表见配置参考)。

配置项类型默认值说明
enabledbooleantrue是否启用日志模块
includesSet<Include>REQUEST_HEADERS、REQUEST_PARAM、RESPONSE_HEADERS、RESPONSE_PARAM全局包含信息
exclude-patternsList<String>空放行路由(Ant 风格路径)
access-log.enabledbooleanfalse是否打印访问日志
access-log.print-request-parambooleanfalse访问日志是否打印请求参数
access-log.param-sensitivebooleanfalse是否过滤敏感参数
access-log.sensitive-paramsList<String>空敏感参数字段列表(精确匹配、区分大小写)
access-log.long-param-truncatebooleanfalse是否自动截断超长参数值
access-log.long-param-thresholdint2000超长参数检测阈值(字符)
access-log.long-param-max-lengthint50截断后最大保留长度(字符)
access-log.long-param-suffixString...截断后追加的后缀符号

包含信息(Include 枚举)

枚举值说明
DESCRIPTION接口描述(来自 @Log 或 @Operation)
MODULE所属模块(来自 @Log 或 @Tag)
REQUEST_HEADERS请求头(默认)
REQUEST_BODY请求体(包含请求体时请求参数无效)
REQUEST_PARAM请求参数(默认)
IP_ADDRESSIP 归属地
BROWSER浏览器
OS操作系统
RESPONSE_HEADERS响应头(默认)
RESPONSE_BODY响应体(包含响应体时响应参数无效)
RESPONSE_PARAM响应参数(默认)

自定义存储与处理器

默认实现 DefaultLogDao 将日志保存在内存中(容量 100 条,超出后丢弃最旧记录)。实现 top.continew.starter.log.dao.LogDao 并注册为 Bean 即可持久化到数据库等任意存储(LogDao Bean 标注了 @ConditionalOnMissingBean,会被你的实现覆盖):

@Configuration
@ConditionalOnEnabledLog
public class LogConfiguration {

    @Bean
    public LogDao logDao() {
        return new CustomLogDao();
    }
}

默认处理器为 AopLogHandler;需要自定义日志内容处理时继承 AbstractLogHandler,或直接替换 LogAspect / AccessLogAspect Bean。

相关源码