반응형
이전 포스팅에서 Database 연동까지 했었다.
이번에는 logback 설정을 해볼 것이다.
logback 설정
- 자바 오픈소스 로깅 프레임워크, SLF4J의 구현체
- 스프링 부트의 기본으로 설정되어 있어서 사용시 별도로 라이브러리를 추가하지 않아도 된다.
- log4j, log4j2 등과 성능을 비교했을 때 logback이 더 훌륭한 성능을 보여준다.
이전 포스팅을 읽었다면 DB 설정
은 이미 log4j
로 변경된 설정값으로 되어있을 것이다.
log4j
에 대한 설정 파일이 별도로 필요하다. application.yml
과 같은 경로에 2개의 파일을 새로 만들고 각각 소스를 추가한다.
log4jdbc.log4j2.yml
- 이쯤에서 다시 말하지만
.yml
확장자가 싫으면 기존properties
확장자 사용해도 된다.
log4jdbc:
spylogdelegator.name: net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
dump.sql.maxlinelength: 0
위 파일은 sql 관련된 소스
logback.xml
<configuration scan="true" scanPeriod="30 seconds">
<springProperty name="profileActive" source="spring.profiles.active" defaultValue="test"/>
<springProperty name="logPath" source="logging.file.path" defaultValue="/var/log/tomcat/test"/>
<springProperty name="logLevel" source="logging.level.root" defaultValue="INFO"/>
<!-- Optional: to enable JMX setting of log levels
cf http://logback.qos.ch/manual/jmxConfig.html -->
<jmxConfigurator/>
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){green} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
<property name="CONSOLE_LOG_CHARSET" value="${CONSOLE_LOG_CHARSET:-default}" />
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>${CONSOLE_LOG_CHARSET}</charset>
</encoder>
</appender>
<!-- test 경우 로그파일을 남기지 않는다. -->
<if condition='"${profileActive}".equals("test")'>
<then/>
<else>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logPath}/spring.log</file>
<!-- file property left unset/blank -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>spring.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>7</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>${CONSOLE_LOG_CHARSET}</charset>
</encoder>
</appender>
<root level="${logLevel}">
<appender-ref ref="FILE" />
</root>
</else>
</if>
<appender name="ATOMIKOS" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>${CONSOLE_LOG_CHARSET}</charset>
</encoder>
</appender>
<!-- log4jdbc 옵션 설정 -->
<logger name="jdbc" level="OFF" />
<!-- 커넥션 open close 이벤트를 로그로 남긴다. -->
<logger name="jdbc.connection" level="OFF" />
<!-- SQL문만을 로그로 남기며, PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문이 보여진다. -->
<logger name="jdbc.sqlonly" level="OFF" />
<!-- SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다. -->
<logger name="jdbc.sqltiming" level="DEBUG" />
<!--
ResultSet을 제외한 모든 JDBC 호출 정보를 로그로 남긴다.
많은 양의 로그가 생성되므로 특별히 JDBC 문제를 추적해야 할 필요가 있는 경우를 제외하고는 사용을 권장하지 않는다.
-->
<logger name="jdbc.audit" level="OFF" />
<!-- ResultSet을 포함한 모든 JDBC 호출 정보를 로그로 남기므로 매우 방대한 양의 로그가 생성된다. -->
<logger name="jdbc.resultset" level="OFF" />
<!-- SQL 결과 조회된 데이터의 table을 로그로 남긴다. -->
<logger name="jdbc.resultsettable" level="OFF" />
<logger name="org.apache.catalina.startup.DigesterFactory" level="ERROR" />
<logger name="org.apache.catalina.util.LifecycleBase" level="ERROR" />
<logger name="org.apache.coyote.http11.Http11NioProtocol" level="WARN" />
<logger name="org.apache.sshd.common.util.SecurityUtils" level="WARN" />
<logger name="org.apache.tomcat.util.net.NioSelectorPool" level="WARN" />
<logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="ERROR" />
<logger name="org.hibernate.validator.internal.util.Version" level="WARN" />
<logger name="org.springframework.boot.actuate.endpoint.jmx" level="WARN" />
<root level="${logLevel}">
<appender-ref ref="CONSOLE" />
</root>
<!-- NOTE: logback does not support FATAL, only ERROR, WARN, INFO, DEBUG and TRACE -->
<logger name="com.atomikos" level="ERROR">
<appender-ref ref="ATOMIKOS" />
</logger>
</configuration>
위 파일은 logback 상세설정 내용이다.
모두 적용한 다음 다시 실행해보면 Console
에 찍히는 내용이 기존과 다를 것이다.
직접 설정값을 바꿔가며 확인해보면 좋을 것 같다.
Previous Chapter
Next Chapter
반응형
'Backend > Spring' 카테고리의 다른 글
Caused by: java.lang.ClassNotFoundException: Could not load requested class : json (0) | 2022.03.03 |
---|---|
Spring Boot - (5) AOP 설정 (0) | 2020.11.26 |
Spring Boot - (3) Database 연동하기(Mysql, MyBatis, HikariCP, sample_db 첨부) (0) | 2020.11.22 |
Ajax를 통한 JSON 데이터 주고 받기 (Spring Boot로 수정) (2) | 2020.11.19 |
Spring Boot - (2) Controller 생성 및 JSP 연동 (0) | 2020.11.14 |