下面是SpringBoot Logback日志记录到数据库的实现方法的详细攻略:
1. 添加依赖
首先需要在pom.xml文件中添加logback、spring-jdbc和mysql-connector-java的依赖,如下所示:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
2. 配置application.properties
在application.properties文件中添加数据库配置和日志文件配置,如下所示:
# 数据库配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/blog?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
# 日志文件配置
logging.level.root=info
logging.config=classpath:logback-spring.xml
logging.file.name=blog.log
# logback mysql
logback.db.url=jdbc:mysql://localhost:3306/blog?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
logback.db.username=root
logback.db.password=123456
3. 配置logback-spring.xml
在resources文件夹下创建logback-spring.xml文件,用于配置Logback日志框架的相关信息。下面是一个简单示例:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 记录到数据库 -->
<appender name="db" class="ch.qos.logback.classic.db.DBAppender">
<connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
<driverClass>com.mysql.cj.jdbc.Driver</driverClass>
<url>${logback.db.url}</url>
<user>${logback.db.username}</user>
<password>${logback.db.password}</password>
</connectionSource>
<sqlDialect class="ch.qos.logback.core.db.dialect.MySQLDialect" />
<insertHeaders>true</insertHeaders>
<bufferSize>1</bufferSize>
<prudent>true</prudent>
</appender>
<root level="${logging.level.root}">
<appender-ref ref="console" />
<appender-ref ref="db" />
</root>
</configuration>
上述示例中,通过Logback的DBAppender将日志信息记录到数据库。connectionSource关键节点用于指定数据库相关信息,其中的url、username、password可以通过application.properties配置文件获取,如此每次修改不必修改logback-spring.xml文件,只需在application.properties配置文件中修改对应信息即可。
示例1. 记录下HTTP请求地址、请求参数、响应时间等信息
@RestController
public class TestController {
@GetMapping("test")
public String test() {
long start = System.currentTimeMillis();
String result = restTemplate.getForObject("https://www.baidu.com", String.class);
long end = System.currentTimeMillis();
LoggerFactory.getLogger(this.getClass()).info("请求地址:https://www.baidu.com,响应时间:{},响应结果:{}", (end - start) + "ms", result);
return result;
}
@Autowired
private RestTemplate restTemplate;
}
在restTemplate请求百度的过程中,记录请求地址、响应结果、响应时间等信息。日志将自动写入数据库。
示例2. 配合AOP记录各方法调用时间等信息
@Service
public class TestService {
@Autowired
private TestRepository testRepository;
public TestPOJO getInfoById(int id) {
long start = System.currentTimeMillis();
TestPOJO result = testRepository.getInfoById(id);
long end = System.currentTimeMillis();
LoggerFactory.getLogger(this.getClass()).info("调用getInfoById方法,耗时:{}ms,参数:id={}", (end - start), id);
return result;
}
}
在使用AOP拦截TestService中的方法,记录各方法的耗时、传参等信息,日志自动写入数据库。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot Logback日志记录到数据库的实现方法 - Python技术站