Maison >Java >javaDidacticiel >Comment SpringBoot intègre P6Spy pour implémenter la journalisation SQL
P6Spy est un framework open source qui peut être utilisé pour intercepter et modifier les instructions de manipulation de données dans les applications.
Les instructions SQL peuvent être interceptées via P6Spy, qui équivaut à un enregistreur d'instructions SQL, afin que nous puissions l'utiliser pour des analyses associées, telles que l'analyse des performances.
<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:
source de données:
nom de classe de pilote : com.mysql.cj.jdbc.Driver
#nom de classe de pilote : com.p6spy.engine .spy.P6SpyDriver
tapez : 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
nom d'utilisateur : root
mot de passe : root# Ouvrez la sortie du journal SQL de 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
peut également imprimer le journal SQL de sortie, mais ce n'est pas l'effet souhaité , comment ? Pour contrôler la sortie du journal SQL souhaitée, vous pouvez utiliser le produit open source P6Spy. mybatis-plus
也可以打印输出的sql日志,但是不是我们想要的效果,如何来控制想要的sql日志输出,可以使用P6Spy开源产品。
resources
目录添加配置文件,类似log4j.xml
# Pilote actuelMise en route avec P6Spy
dateformat=aaaa-MM-jj HH:mm:ss
spy.properties
Ajoutez un fichier de configuration au répertoireresources
, similaire àlog4j.xml
, pour enregistrer les informations de configuration
module.log=com .p6spy.engine.logging.P6LogFactory , com.p6spy.engine.outage.P6OutageFactory
# impression du journal SQL
# 1. logMessageFormat=com.p6spy.engine.spy.appender.SingleLineFormat
# 2. logMessageFormat=com.p6spy. engine.spy.appender.CustomLineFormat
# customLogMessageFormat=%(currentTime) | Temps d'utilisation SQL : %(executionTime) ms | informations de connexion : %(category)-%(connectionId) | exécuter sql : %(sql)
# 3. Impression de journal personnalisée (nom de classe complet)
logMessageFormat=cn.zysheep.config.P6SPYConfig
# Utiliser le système de journalisation pour enregistrer sql
appender=com.p6spy.engine.spy.appender.Slf4JLogger
## Configurer les exceptions de journalisation
includecategories=info,debug,result, batc,resultset
# Définir pour utiliser le pilote p6spy comme proxy
deregisterdrivers=true
# Format de date
driverlist=com. mysql.cj.jdbc.Driver
# S'il faut activer l'enregistrement SQL lentmot de passe : root# Activez la sortie du journal SQL de mybatis-plusP6Spy a un format de sortie SQL intégré, comme indiqué dans le fichier de configuration ci-dessus . Ici, nous utilisons l'impression de journaux SQL personnalisée
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
nom d'utilisateur : root
tapez : 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🎜🎜🎜Classe de test inchangée🎜🎜🎜🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!