IT/development

[spring boot/mybatis] ์ฟผ๋ฆฌ ๋กœ๊ทธ ์ •๋ ฌ ๋ฐ ๊ธฐํƒ€(feat. log4jdbc)

์•Œ ์ˆ˜ ์—†๋Š” ์‚ฌ์šฉ์ž 2022. 11. 19.

๋ชฉ์ฐจ

     

    mybatis log4j ์ฟผ๋ฆฌ ๋กœ๊ทธ ์ •๋ ฌ ๋ฐ ๊ธฐํƒ€ ๐Ÿ˜„

    mybatis์™€ log4j๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ์ฟผ๋ฆฌ๊ฐ€ ์ผ๋ ฌ๋กœ ๋‚˜์˜ค๊ณ  parameter๊ฐ’์ด "?"๋กœ ํ‘œ์‹œ๋œ๋‹ค.

    ์งง์€ ์ฟผ๋ฆฌ๋ฉด ์ƒ๊ด€ ์—†์ง€๋งŒ ๊ธด ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ์—๋Š” Parameters๋กœ ๋‚˜์˜จ ๊ฐ’์„ ?์— ๋ณต๋ถ™์„ ํ•ด์„œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ด ๋ด์•ผ ๋œ๋‹ค.

    ์‹œ๊ฐ„๋„ ์‹œ๊ฐ„์ด๊ณ  ๊ฐ€๋…์„ฑ๋„ ์•ˆ์ข‹์•„์„œ ๊ฐœ๋ฐœ์‹œ์—๋Š” ์—ฌ๊ฐ„ ๋ถˆํŽธํ•œ๊ฒŒ ์•„๋‹ˆ๋‹ค.

    ๊ทธ๋ž˜์„œ log4jdbc๋ฅผ ์ด์šฉํ•ด์„œ ์ฟผ๋ฆฌ๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ์ •๋ ฌ/์ •๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ธฐ๋กํ•œ๋‹ค.


    log4jdbc ์˜์กด์„ฑ ์ถ”๊ฐ€ ๐Ÿค—

    maven ๊ธฐ์ค€ pom.xml์— ์˜์กด์„ฑ ์ถ”๊ฐ€

    <dependency>
    <groupId>org.bgee.log4jdbc-log4j2</groupId>
    <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
    <version>1.16</version> <!-- version์€ ๋‚˜์ค‘์— ๋‹ค๋ฅธ ๊ฑธ๋กœ ํ•˜๊ฒŒ ๋  ์ˆ˜๋„ ์žˆ์Œ -->
    </dependency>

     

    gradle ๊ธฐ์ค€ build.gradle์— ์˜์กด์„ฑ ์ถ”๊ฐ€

    // ์—ฌ๊ธฐ์— ์ถ”๊ฐ€
    dependencies {
        implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
        implementation 'org.springframework.boot:spring-boot-starter-web'
        implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.2'
        implementation 'org.springframework.boot:spring-boot-devtools'
        // ์ด ๊ฒƒ ์ถ”๊ฐ€(๋ฒ„์ „์„ ๋”ฐ๋กœ ๋ช…์‹œํ•˜์ง€ ์•Š์•„๋„ starter์—์„œ ์ตœ์ ํ™” ๋ฒ„์ „์„ ๊ฐ€์ง€๊ณ  ์˜ด)
        implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
        compileOnly 'org.projectlombok:lombok'
        runtimeOnly 'com.h2database:h2'
        testCompileOnly 'org.projectlombok:lombok'
        annotationProcessor 'org.projectlombok:lombok'
        testImplementation 'org.springframework.boot:spring-boot-starter-test'
    }

     

    application.properties์˜ jdbc ์ ‘์†์ •๋ณด url, driver class name ๋ณ€๊ฒฝ ๐Ÿ˜‰

    # ๊ธฐ์กด์˜ jdbc:mysql์„ jdbc:log4jdbc:mysql ๋กœ ์‹œ์ž‘ํ•˜๋Š” url ๋กœ ๋ณ€๊ฒฝ(jdbc:"์ด ์‚ฌ์ด์— log4jdbc ์ถ”๊ฐ€๋จ":mysql)
    #url: jdbc:mysql://localhost:3306/test  
    url: jdbc:log4jdbc:mysql://localhost:3306/test
    username: test
    password: 1234
    # ๊ธฐ์กด์˜ com.mysql.jdbc.Driver๋ฅผ net.sf.log4jdbc.sql.jdbcapi.DriverSpy ๋กœ ๋ณ€๊ฒฝ
    #driver-class-name: com.mysql.jdbc.Driver 
    driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy

    application.yml์˜ ๊ฒฝ์šฐ ์•„๋ž˜์ฒ˜๋Ÿผ url, driver class name ๋ณ€๊ฒฝ ๐Ÿ˜…

    spring:
      datasource:
    #    url: jdbc:h2:tcp://localhost/~/devlsy-service1;MODE=mySQL
    # ์•„๋ž˜์ฒ˜๋Ÿผ ๋ณ€๊ฒฝ(์•„๋ž˜๋Š” h2 ๋ฉ”๋ชจ๋ฆฌ DB ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ)
        url: jdbc:log4jdbc:h2:tcp://localhost/~/devlsy-service1;MODE=mySQL
        username: sa
        password:
    #    driver-class-name: org.h2.Driver
    # ๋“œ๋ผ์ด๋ฒ„๋ช… ์•„๋ž˜์ฒ˜๋Ÿผ ๋ณ€๊ฒฝ
        driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
    
    mybatis:
      mapper-locations: mybatis-mapper/**/*.xml

     

     

    logback.xml ์ˆ˜์ • (์ด๊ฑด ๋‚ด ๊ฒฝ์šฐ์ด๊ณ , ๋‹ค๋ฅธ ๊ฑธ ์‚ฌ์šฉํ•  ์‹œ logger ์„ค์ • ํ•˜๋Š” ๊ณณ ์ˆ˜์ •)๐Ÿ˜†

    <logger name="jdbc" level="OFF"/>
    <!-- sqlonly ๋ ˆ๋ฒจ ์ˆ˜์ •-->
    <logger name="jdbc.sqlonly" level="DEBUG"/>
    <logger name="jdbc.sqltiming" level="DEBUG"/>
    <logger name="jdbc.audit" level="OFF"/>
    <logger name="jdbc.resultset" level="OFF"/>
    <!-- ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํ…Œ์ด๋ธ” ํ˜•์‹์œผ๋กœ ๋ณผ๋ ค๋ฉด resultsettable ๋ ˆ๋ฒจ ์ˆ˜์ • -->
    <logger name="jdbc.resultsettable" level="DEBUG"/>
    <logger name="jdbc.connection" level="OFF"/>

     

    log4jdbc.log4j2.properties ์ถ”๊ฐ€ ๐Ÿ™„

    src/main/resources๊ฒฝ๋กœ์— log4jdbc.log4j2.properties ์ถ”๊ฐ€ ํ›„ ์•„๋ž˜ ๋‚ด์šฉ ์ž…๋ ฅ

    log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
    log4jdbc.dump.sql.maxlinelength=0

     

    ์ ์šฉ ๊ฒฐ๊ณผ ๐Ÿ˜›

     

    ์ฐธ์กฐ : http://jmlim.github.io/spring/2018/12/26/spring-boot-logback-sql-pretty/

     

    ์Šคํ”„๋ง ๋ถ€ํŠธ(Spring boot) ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค(Mybatis) ์—์„œ ์ฟผ๋ฆฌ ๋กœ๊ทธ ์ถœ๋ ฅ ๋ฐ ์ •๋ ฌํ•˜๊ธฐ. · ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•œ ๊ฐœ

    ์Šคํ”„๋ง ๋ถ€ํŠธ(Spring boot) ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค(Mybatis) ์—์„œ ์ฟผ๋ฆฌ ๋กœ๊ทธ ์ถœ๋ ฅ ๋ฐ ์ •๋ ฌํ•˜๊ธฐ. 26 Dec 2018 | Spring Logback SQL ์ •๋ ฌ SQL pretty MyBatis ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค (์ด ๋‚ด์šฉ์€ Spring boot์˜ logback(๊ธฐ๋ณธ๋กœ๊ทธ์„ค์ •)์„ ์‚ฌ์šฉํ•˜๋ฉฐ mybati

    jmlim.github.io

     

    ๋Œ“๊ธ€