Heim > Java > javaLernprogramm > Hauptteil

Wie SpringBoot P6Spy integriert, um die SQL-Protokollierung zu implementieren

WBOY
Freigeben: 2023-05-15 12:10:06
nach vorne
1308 Leute haben es durchsucht

Einführung in P6Spy

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.

Anwendungsszenario

pom

<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>
Nach dem Login kopieren

application.yml

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

entity

@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("course_1")
public class Course {
    @TableField("cid")
    private Long cId;
    private String cName;
    private Integer userId;
    private String cStatus;
}
Nach dem Login kopieren

Mapper

public interface CourseMapper extends BaseMapper<Course> {
}
Nach dem Login kopieren

Startup class

@SpringBootApplication
@MapperScan(basePackages = "cn.zysheep.mapper")
public class ShardingjdbcdemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(ShardingjdbcdemoApplication.class, args);
    }
}
Nach dem Login kopieren

Test class

@SpringBootTest
@Slf4j
class ShardingjdbcdemoApplicationTests {
    @Autowired
    private CourseMapper courseMapper;
    @SneakyThrows
    @Test
    void findCourse() {
        courseMapper.selectList(null).forEach(System.out::println);
    }
}
Nach dem Login kopieren

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开源产品。

Wie SpringBoot P6Spy integriert, um die SQL-Protokollierung zu implementieren

P6Spy入门使用

spy.properties

resources目录添加配置文件,类似log4j.xml

Wie integriert SpringBoot P6Spy, um SQL-Protokolle zu implementieren

Erste Schritte mit P6Spy

spy.properties

Fügen Sie eine Konfigurationsdatei zum Verzeichnis resources hinzu, ähnlich wie log4j.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

dateformat=yyyy-MM-dd HH:mm:ss
# Tatsächlicher Treiber

driverlist=com. mysql.cj.jdbc.Driver

# Ob die langsame SQL-Aufzeichnung aktiviert werden soll

outagedetection=true

# Langsame SQL-Aufzeichnung in Standardsekunden

outagedetectioninterval=2

P6Spy verfügt über ein integriertes SQL-Ausgabeformat, wie in der Konfigurationsdatei oben gezeigt . Hier verwenden wir den benutzerdefinierten SQL-Protokolldruck

P6SPYConfig

public 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);
    }
}
Nach dem Login kopieren

application.yml


spring:
datasource: # Driver-Class-Name: com.mysql.cj.jdbc.Driver

Driver-Class-Name: 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

# Aktivieren Sie die SQL-Protokollausgabe von mybatis-plus

mybatis-plus:Wie SpringBoot P6Spy integriert, um die SQL-Protokollierung zu implementieren 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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage