본문 바로가기
Java

[SpringBoot] RestApi 만들기 (3) Log (slf4j+logback)

by bryan.oh 2021. 7. 4.
반응형

SpringBoot
slf4j + Logback

 

slf4j 와 logback 에 대한 개념은 이전 글에서 확인하시고요.

2021.07.03 - [Java] - [SLF4J] slf4j 알고가기 + Logback

이 글에서는 실제 spring boot project 에 적용해서 테스트 해보겠습니다.

 

이전 글에서 진행한 프로젝트의 연속입니다.

 

1. dependency 추가

build.gradle 의 dependencies 에 아래 두줄을 추가하고 저장!

// slf4j & logback
implementation('org.slf4j:jcl-over-slf4j')
implementation('ch.qos.logback:logback-classic')

현재까지 전체 dependencies

그리고 build.gradle 파일에서 우클릭 > Gradle > Refresh.. 클릭

 

2. logback 설정 

아래 경로에 logback-spring.xml 파일을 생성하고 다음과 같이 작성합니다.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
 
    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

<그 외 설정은 이전 글 참고>

 

 

3. 사용

log 에 빨간줄이 떴네요.

Project and External Dependencies 를 확장하고 lombok-{version}.jar 를 찾습니다.

jar 파일에서 우클릭 후 Run As -> Java Application 클릭.

 

Proceed 버튼 클릭

IDEs 를 Scan 할 동안 기다립니다.

Install / Update 를 누릅니다.

누르자마자 아래 화면이 뜨네요.

이클립스를 재시작하고 프로젝트를 rebuild 하라네요.

이클립스를 재시작합니다. File -> Restart 

전 빌드를 auto 로 해놔서,

그냥 Clean 해봅니다.

 

엑스박스가 사라졌습니다.

앱을 실행해보고 localhost:8000/info 를 호출해봅니다.

로그가 찍혔습니다.

 

로그 설정파일에서 Level 을 바꿔보죠.

저장 후 다시 호출

info 만 잘 찍히네요.

 

File 저장

logback-spring.xml 파일을 바꿔보겠습니다.

  • 콘솔에는 모든 log 출력
  • info  이상만 파일로 출력
<?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>
    <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <file>log.txt</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily -->
            <fileNamePattern>log-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- or whenever the file size reaches 100MB -->
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>[%-5level] %d{HH:mm:ss.SSS} %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <root level="debug">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="ROLLING"/>
    </root>
</configuration>

그리고 실행 해보면,

project root 에 파일이 생겼네요.

log file path 변경.

그리고 다시 호출~

project 우클릭 -> Refresh 해보면 나옵니다.

일자별로 로그파일이 롤링되니까 내일이면 file name 이 변경된게 생기겠네요.

 

이상 slf4j 와 logback 을 기본으로 사용해봤습니다~

 

Spring Boot Tutorial 시리즈

Spring Boot Tutorial 부록

 

To be continue...

728x90
반응형

댓글