Heim >Java >javaLernprogramm >Wie SpringBoot P6Spy integriert, um die SQL-Protokollierung zu implementieren
P6Spy ist ein Open-Source-Framework, das zum Abfangen und Ändern von Datenmanipulationsanweisungen in Anwendungen verwendet werden kann.
SQL-Anweisungen können über P6Spy abgefangen werden, was einem Rekorder für SQL-Anweisungen entspricht, sodass wir es für entsprechende Analysen, beispielsweise Leistungsanalysen, verwenden können.
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.20</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.1</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>p6spy</groupId> <artifactId>p6spy</artifactId> <version>3.8.2</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency> </dependencies>
spring:
Datenquelle:
Treiberklassenname: com.mysql.cj.jdbc.Driver
#Treiberklassenname: com.p6spy.engine .spy.P6SpyDriver
Typ: com.alibaba.druid.pool.DruidDataSource
URL: jdbc:mysql://localhost:3306/course_db?serverTimezone=GMT%2B8
# URL: jdbc:p6spy:mysql://localhost: 3306/course_db?serverTimezone=GMT%2B8
Benutzername: root
Passwort: root# Öffnen Sie die SQL-Protokollausgabe von mybatis-plus
mybatis-plus:
Configuration:
log-impl: org.apache.ibatis.logging. stdout .StdOutImpl
@Data @NoArgsConstructor @AllArgsConstructor @TableName("course_1") public class Course { @TableField("cid") private Long cId; private String cName; private Integer userId; private String cStatus; }
public interface CourseMapper extends BaseMapper<Course> { }
@SpringBootApplication @MapperScan(basePackages = "cn.zysheep.mapper") public class ShardingjdbcdemoApplication { public static void main(String[] args) { SpringApplication.run(ShardingjdbcdemoApplication.class, args); } }
@SpringBootTest @Slf4j class ShardingjdbcdemoApplicationTests { @Autowired private CourseMapper courseMapper; @SneakyThrows @Test void findCourse() { courseMapper.selectList(null).forEach(System.out::println); } }
mybatis-plus
kann auch das Ausgabe-SQL-Protokoll drucken, aber das ist nicht der gewünschte Effekt , wie? Um die gewünschte SQL-Protokollausgabe zu steuern, können Sie das Open-Source-Produkt P6Spy verwenden. mybatis-plus
也可以打印输出的sql日志,但是不是我们想要的效果,如何来控制想要的sql日志输出,可以使用P6Spy开源产品。
resources
目录添加配置文件,类似log4j.xml
# Tatsächlicher TreiberErste Schritte mit P6Spy
dateformat=yyyy-MM-dd HH:mm:ss
spy.properties
Fügen Sie eine Konfigurationsdatei zum Verzeichnisresources
hinzu, ähnlich wielog4j.xml
, um Konfigurationsinformationen aufzuzeichnen
module.log=com .p6spy.engine.logging.P6LogFactory , com.p6spy.engine.outage.P6OutageFactory
# SQL-Protokollausdruck
# 1. logMessageFormat=com.p6spy.engine.spy.appender.SingleLineFormat
# 2. logMessageFormat=com.p6spy. engine.spy.appender.CustomLineFormat
# customLogMessageFormat=%(currentTime) |. SQL-Nutzungszeit: %(executionTime) ms |. sql ausführen: %(sql)
# 3. Benutzerdefinierter Protokolldruck (vollständig qualifizierter Klassenname)
logMessageFormat=cn.zysheep.config.P6SPYConfig
# Verwenden Sie das Protokollsystem zum Aufzeichnen von sql
appender=com.p6spy.engine.spy.appender.Slf4JLogger
## Konfigurieren Sie die Protokollierung von Protokollausnahmen
excludecategories=info,debug,result, batc,resultset
#Eingestellt, um den p6spy-Treiber als Proxy zu verwenden
deregisterdrivers=true
#Datumsformat
driverlist=com. mysql.cj.jdbc.Driver
# Ob die langsame SQL-Aufzeichnung aktiviert werden sollPasswort: root# Aktivieren Sie die SQL-Protokollausgabe von mybatis-plusP6Spy verfügt über ein integriertes SQL-Ausgabeformat, wie in der Konfigurationsdatei oben gezeigt . Hier verwenden wir den benutzerdefinierten SQL-Protokolldruck
P6SPYConfigpublic class P6SPYConfig implements MessageFormattingStrategy { @Override public String formatMessage(int connectionId, String now, long elapsed, String category, String prepared, String sql, String url) { Map<String, Object> message = new LinkedHashMap<>(8); String newPrepared = prepared.replace(" ", "").replace("\n", " "); message.put("prepared", newPrepared); String newSql = sql.replace(" ", "").replace("\n", " "); message.put("sql", newSql); return JSONObject.toJSONString(message, true); } }
application.yml
spring:
datasource: # Driver-Class-Name: com.mysql.cj.jdbc.DriverDriver-Class-Name: com . p6spy.engine.spy.P6SpyDriver
Benutzername: root
Typ: com.alibaba.druid.pool.DruidDataSource
# URL: jdbc:mysql://localhost:3306/course_db?serverTimezone=GMT%2B8
URL: jdbc:p6spy:mysql: / /localhost:3306/course_db?serverTimezone=GMT%2B8
mybatis-plus: Configuration:
log-impl: org.apache. ibatis .logging.stdout.StdOutImpl🎜🎜🎜Testklasse unverändert🎜🎜🎜🎜Das obige ist der detaillierte Inhalt vonWie SpringBoot P6Spy integriert, um die SQL-Protokollierung zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!