外观
快速开始
本例使用一个简单保存器,将采集结果输出到应用日志。完成后,访问一个接口即可看到对应的操作记录。
前提:已有能够启动的 EFC Web 应用,且已配置框架基础 Parent。以下依赖按当前源码版本 4.1.0-SNAPSHOT 编写,该版本需在本地或项目 Maven 仓库中可用。
1. 添加依赖
在应用 POM 中导入 Component BOM 并添加日志组件。已通过项目 BOM 或 Business BOM 管理版本时,无需重复导入。
xml
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.own</groupId>
<artifactId>springboot-component-dependencies</artifactId>
<version>4.1.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.own.component</groupId>
<artifactId>springboot-component-system-log</artifactId>
</dependency>
</dependencies>2. 提供保存器
将以下配置类放在应用扫描范围内。SystemLogPersistence 接收完整日志,本例仅输出几项摘要,用于验证采集链路。
java
import com.own.component.log.spi.SystemLogPersistence;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration(proxyBeanMethods = false)
public class DemoLogConfiguration {
private static final Logger LOGGER =
LoggerFactory.getLogger(DemoLogConfiguration.class);
@Bean
SystemLogPersistence demoLogPersistence() {
return record -> LOGGER.info(
"操作日志 id={} operation={} httpStatus={}",
record.id(), record.operation().name(),
record.response().httpStatus());
}
}实际项目可将该实现替换为自己的数据库或外部服务调用,也可以直接使用 Business 存储模块。
3. 开启采集
yaml
spring:
application:
name: log-demo
own:
system-log:
enabled: true采集默认关闭。使用默认记录器时,启用后必须有服务名和至少一个保存器,否则启动失败。服务名优先取 own.system-log.service-name,未配置时取 spring.application.name。
4. 标注接口
将 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");
}
}@AopSystemLogModule 声明模块名称,@AopSystemLogRecord 声明需要记录的操作。两个注解均由 Constant 提供,随组件依赖引入,实际采集由系统日志组件完成。
5. 验证结果
启动应用,按实际端口和认证要求访问 GET /log-demo/ping。接口返回 pong,随后可在应用日志中看到包含事件 ID、操作名称“测试日志”和 HTTP 状态的摘要。
保存异步执行,接口返回与摘要输出可能不是同一时刻。未看到记录时,依次检查总开关、方法注解、保存器 Bean 和应用日志级别。
接下来阅读使用与配置,调整采集内容、响应大小和异步队列。