Project/MangoPlate Clone

간단한 logBack 설정

혀눅짱 2023. 2. 20. 15:58

이번 프로젝트에 로그백을 적용할까 말까 하다가 그냥심플하게 로컬과 운영만 분리해서 적용해보았다.

## logging ##
logging.level.root=info
logging.config=classpath:log/logback-real.xml
## logging ##
logging.level.root=info
logging.config=classpath:log/logback-local.xml

운영 설정파일과 로컬설정파일에 각각 로그백 파일 경로를 추가한다.

 

 

logback-local.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}[%-5level] : %msg%n</pattern>
        </encoder>
    </appender>
    <root level="info">
        <appender-ref ref="STDOUT"/>
    </root>
    <logger name="jdbc.sqlonly" level="OFF"/>
    <logger name="jdbc.sqltiming" level="INFO"/>
    <logger name="jdbc.resultsettable" level="INFO"/>
    <logger name="jdbc.audit" level="OFF"/>
    <logger name="jdbc.resultset" level="OFF"/>
    <logger name="jdbc.connection" level="OFF"/>
</configuration>

 

logback-real.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!-- 로그파일 저장 경로 -->
    <property name="LOG_DIR" value="로그저장경로" />

    <!-- CONSOLE -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} : %30logger{5} - %msg%n
            </Pattern>
        </layout>
    </appender>
    <!-- // CONSOLE -->
    <!-- SYSLOG -->
    <appender name="SYSLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_DIR}/syslog/syslog.log</file>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} : %30logger{5} - %msg%n
            </Pattern>
        </layout>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_DIR}/syslog/syslog.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>
    <!-- // SYSLOG -->

    <root level="info">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="SYSLOG" />
    </root>

    <logger name="jdbc.sqlonly" level="OFF"/>
    <logger name="jdbc.sqltiming" level="INFO"/>
    <logger name="jdbc.resultsettable" level="OFF"/>
    <logger name="jdbc.audit" level="OFF"/>
    <logger name="jdbc.resultset" level="OFF"/>
    <logger name="jdbc.connection" level="OFF"/>


</configuration>

 

build.gradle

 

implementation group: 'org.bgee.log4jdbc-log4j2', name: 'log4jdbc-log4j2-jdbc4.1', version: '1.16'

 

log4jdbc.log4j2.properties

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

db접속 정보

spring.datasource.url=jdbc:log4jdbc:mariadb:
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy

sql 로깅을 위해 log4jdbc 라이브러리를 업그레이드 시킨후 

log4jdbc.log4j2.properties 생성, db접속정보 변경을 하였다.

 

그후 local 로그백은 별도의 물리파일은 저장하지 않고 콘솔에만 출력하는것으로 하였고

aws 배포서버에는 실제 로그파일이 떨궈지도록 구성하였다. 로컬에만 Resultsetable 로그옵션이 켜져있는데 이건그냥 쿼리조회결과를 테이블형식으로 쿼리에 보여준다 로컬에서도 굳이 필요없는데 걍 구색맞추기로 켜놓았다.

 

흠 근데 문제가 하나있다 mybatis 쿼리는 가독성좋게 줄바꿈으로 나오는데

jpa쿼리는 한줄로 나온다 이거 추후에좀 찾아봐야겠다 끝!