본문 바로가기
IT/Spring Boot

spring boot에 logback 적용하기

by 골든크랩 2022. 10. 8.
728x90
반응형

 

로그를 남기고 싶어서 적용함.

 

스프링부트는 SLF4J(Simpole Logginb Facade for Java)를 이용하여 로그를 관리한다.

SLF4J는 로깅을 위한 추상계층을 제공하는 Interface이고, 이를 구현한 다양한 라이브러리들이 있는데...본인 입맛에 맞는 라이브러리를 사용하면 된다.

 

이를 그림으로 보면, 응용계층(연두색)에서는 SLF4J API(녹색)를 호출하고,

실제 로깅기능 구현은 SLF4J 하단의 (파란색, 청색) 라이브러리들이 한다.

이렇게 하면 로깅 라이브러리를 변경해도, 응용계층은 영향을 받지 않게된다.

 

 

build.gradle에 다음 문장 추가.

 

testImplementation 'ch.qos.logback:logback-classic:1.4.3'

 

 

샘플코드

package com.example.myhome2.guestbook.contoller;

import com.example.myhome2.guestbook.domain.GuestbookDto;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

@CrossOrigin("*")
@RestController
public class PersonController {

    private static final Logger logger = LoggerFactory.getLogger(PersonController.class);

        @RequestMapping("/person/list")
    List<HashMap<String, String>> getList() {
        List<HashMap<String, String> > list = new ArrayList<HashMap<String, String>>();

        logger.info("logging-------Test");

        HashMap<String, String> map = new HashMap<String, String>();
        map.put("name", "홍길동");
        map.put("phone", "010-2233-6015");
        list.add(map);

        map = new HashMap<String, String>();
        map.put("name", "임꺽정");
        map.put("phone", "010-1111-2222");
        list.add(map);

        map = new HashMap<String, String>();
        map.put("name", "장길산");
        map.put("phone", "010-3333-4444");
        list.add(map);


        return list;
    }

}

 

실행결과

 

실행결과를 보면, 로그시간이 없는 것을 볼수 있다.

로그 출력 패턴은 logback-spring.xml 을 사용해 지정할 수 있다.

resouces 디렉토리에 logback-spring.xml 파일을 만들고 아래 내용을 넣으면 된다.

==========

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

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="console" />
    </root>

    <!-- Logger -->
    <logger name="com.*" level="DEBUG" appender-ref="console" />
    <logger name="jdbc.sqlonly" level="INFO" appender-ref="console" />
    <logger name="jdbc.resultsettable" level="INFO" appender-ref="console" />

</configuration>

==========

출력양식이 달라진 것을 알 수 있다.

 

 

 

 

 

 

 

 

참고 - 여기 읽을 만한게 좀 많을듯)

https://aamoos.tistory.com/404

 

[Spring Boot] 5. logback 설정 (Gradle+Mybatis+멀티프로젝트+MYSQL+STS)

프로젝트 구조 build.gradle에 해당코드 추가 implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16' application.properties에 해당코드 추가 logging.level.root=info spring.datasource.d..

aamoos.tistory.com

 

 

 

 

 

 

 

 

728x90
반응형

'IT > Spring Boot' 카테고리의 다른 글

스프링 EHCACHE  (0) 2022.10.25
Quartz Job Scheduler란?  (0) 2022.10.11
Axis 강좌  (0) 2022.09.29
SpringBoot프로젝트에 JSP 프로그래밍 추가 하기  (0) 2022.09.29
SpringBoot프로젝트에 Servlet 프로그래밍 추가 하기  (0) 2022.09.29

댓글