跳转到正文

快速开始

本例将接口操作日志写入本地 CSV,完成一次“接口调用 → 采集 → 保存”,无需配置数据库或 RabbitMQ。

前提:已有能够启动的 EFC Web 应用,且已配置框架基础 Parent。示例使用当前源码版本 4.1.0-SNAPSHOT,该版本需在本地或项目 Maven 仓库中可用。

1. 添加依赖

在应用 POM 中导入 Business BOM,并添加 CSV 存储模块。已有统一 BOM 时无需重复导入。

xml
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.own</groupId>
            <artifactId>springboot-business-dependencies</artifactId>
            <version>4.1.0-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>com.own.business</groupId>
        <artifactId>springboot-business-system-log-persistence-file-csv</artifactId>
    </dependency>
</dependencies>

CSV 模块会传递引入 springboot-component-system-log,并自动注册保存器,不需要再编写 SystemLogPersistence 实现。

2. 开启采集并设置目录

yaml
spring:
  application:
    name: log-demo
own:
  system-log:
    enabled: true
    file-csv:
      save-path: ./logs/system-log

enabled 默认 false,需要显式开启。CSV 保存器默认启用;save-path 相对于应用工作目录,目录不存在时自动创建,运行应用的用户须有写入权限。

3. 标注接口

将以下 Controller 放在应用扫描范围内:

java
import com.own.component.base.model.R;
import com.own.component.base.model.ResultModel;
import com.own.constant.aop.log.AopSystemLogModule;
import com.own.constant.aop.log.AopSystemLogRecord;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@AopSystemLogModule("日志演示")
public class DemoController {
    @GetMapping("/log-demo/ping")
    @AopSystemLogRecord(name = "测试日志", code = "log.demo.ping")
    public ResultModel<String> ping() {
        return R.success("pong");
    }
}

注解指定模块与操作名称。未标注 @AopSystemLogRecord 的接口不会被自动记录。

4. 发起请求并查看文件

启动应用,按实际端口和认证要求访问 GET /log-demo/ping。接口返回后,异步保存器会向以下文件追加记录:

text
logs/system-log/system-log_yyyy-MM-dd.csv

日期取自请求时间。首次写入包含表头,每条记录包含操作、响应、时间等字段;extra 列中的 systemLog 保存完整采集快照。

没有生成文件时,依次检查:是否开启采集、Controller 是否被扫描且方法已标注、目录是否可写、应用是否输出日志保存失败提示。

下一步

  • 需要更换存储或同时写入多个位置:阅读日志存储
  • 需要分页和详情接口:增加数据库后端,阅读日志查询。CSV 本身不提供查询。
  • 需要调整请求参数和响应内容:阅读 Component 使用与配置
示例涉及的源码类型

RResultModelAopSystemLogModule