将Spring Boot日志数据放入数据库可以通过以下步骤实现:
以下是一个示例的Spring Boot日志数据存储到数据库的代码:
// 1. 创建日志表
CREATE TABLE log_data (
id INT AUTO_INCREMENT PRIMARY KEY,
level VARCHAR(10),
timestamp TIMESTAMP,
class_name VARCHAR(255),
method_name VARCHAR(255),
thread_name VARCHAR(255),
message TEXT
);
// 2. 配置数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
// 3. 配置日志输出
<appender name="databaseAppender" class="ch.qos.logback.classic.db.DBAppender">
<connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
<driverClass>com.mysql.jdbc.Driver</driverClass>
<url>jdbc:mysql://localhost:3306/mydb</url>
<user>root</user>
<password>123456</password>
</connectionSource>
</appender>
<logger name="com.example" level="DEBUG">
<appender-ref ref="databaseAppender" />
</logger>
// 4. 编写日志处理代码
@Aspect
@Component
public class LogAspect {
@Autowired
private LogRepository logRepository;
@AfterReturning(pointcut = "execution(* com.example..*.*(..))", returning = "result")
public void logAfterReturning(JoinPoint joinPoint, Object result) {
LogData logData = new LogData();
logData.setLevel("INFO");
logData.setTimestamp(new Date());
logData.setClass_name(joinPoint.getTarget().getClass().getName());
logData.setMethod_name(joinPoint.getSignature().getName());
logData.setThread_name(Thread.currentThread().getName());
logData.setMessage(result.toString());
logRepository.save(logData);
}
}
// 5. 配置日志处理类
logging.level.com.example=DEBUG
上述代码中,通过AOP拦截了com.example包及其子包下的所有方法,在方法执行后将返回结果存储到数据库中。
推荐的腾讯云相关产品:腾讯云数据库MySQL、腾讯云云服务器CVM。
腾讯云数据库MySQL:https://cloud.tencent.com/product/cdb
腾讯云云服务器CVM:https://cloud.tencent.com/product/cvm
领取专属 10元无门槛券
手把手带您无忧上云