外观
快速开始
本例将接口操作日志写入本地 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-logenabled 默认 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 使用与配置。