ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스프링 부트 기본 로거 설정
    백기선(인프런 강의)/스프링 부트 개념과 활용 2020. 4. 16. 09:03
    반응형

    https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html - 커스텀로그 설정 파일 사용

    https://docs.spring.io/spring/docs/5.0.0.RC3/spring-framework-reference/overview.html#overview-logging - spring 5 로거 관련 변경 사항

     

     

    스프링 부트가 사용하는 로깅 원리

    • 스프링 보트 기본적으로 Commons logging을 사용한다.
      • 리소스 코드에서도 SLF4j를 사용하면 됨
    • SLF4j가 더 안정적인데 Commons logging을 사용한는 이유는 스프링 코어를 개발 할 때 SLF4j가 존재하지 않아서이이다.
    • CommonsLoggingSLF4j 로거 퍼서드이다. 실제로 로깅하는 것이 아니라, 로거 API들을 추상화 해놓은 인터페이스이다.
    • 로거 퍼서드를 사용하게 되면 로거를 바꾸어 낄 수 있다.
    • Spring 5부터는 SLF4j를 사용하기 위해서 Spring-JCL이라는 모듈을 만들었다. Spring-JCLCommons Logging은 컴파일 시점에 SL4FjLog4j2로 변경하는 기능을 가진 모듈이다. SLF4j최종 로거를 의존성에 근거하여 고르게 된다.

    결국 스프링은 Commong Logging, SLF4j를 사용해도 상관이 없다. 왜냐하면 Commons Logging을 쓰더라고 SLFj4로 바뀌게 되고 SLF4jLogback 로거를 사용한다. 결국 어떻게 쓰더라도 Logback을 쓰게 된다.

     

    Logback이 SLF4j의 구현체이다.

    LogBack의 의존성

     

    로그 포맷

    로그 포맷의 기본 설정은 아래와 같다.

    날짜 | 시간 | 로그레벨 | PID | 쓰레드이름 | 풀 패키지경로&클래스 이름 | 메세지 

     

    디버그 레벨 설정

    일부 핵심 라이브러리만 디거깅 모드

    --debug

     

    전부 다 디버깅 모드

    -trace

     

     

     

    컬러 로그

    application.properties에 spring.output.ansi.enable=always 적어두기

     

    로그파일 생성

    application.properties에 logging.file.path=경로 를 작성해주면된다. 

    생성위치

     

    패키지 마다 로그 레벨 설정

    패키지마다 설정

     

     

    로거 만들기

    @Component
    public class SampleRunner implements ApplicationRunner{
    	private  Logger logger = LoggerFactory.getLogger(SampleRunner.class);
    	@Override
    	public void run(ApplicationArguments args) throws Exception {
    		logger.info("여기는 로그 찍은 곳@!");
    	}
    }

     

     

    로그 커스텀

    logback.xml이나 logback-spring.xml을 만들면 된다. 하지만 Logback extention을 사용할라면 logback-spring.xml을 사용해야 된다. 그 이유는 logback.xml은 너무 일찍 로딩되기 때문에 logback-spring.xml을 사용해야 된다.

     

     

    logback-spring.xml 위치

     

    logback-spring.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
        <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
        <root level="INFO">
            <appender-ref ref="CONSOLE" />
        </root>
        <logger name="kr.co.root.study" level="DEBUG"/>
    </configuration>

     

     

    Logback 대신 Log4j2로 로거 바꾸기

    https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html#howto-configure-log4j-for-logging

     

    tomcat을 jetty로 수정한 것처럼 수정하면 된다.

    그리고 이것을 커스텀하고 싶으면 log4j2-spring.xml로 수정하면 된다.

    반응형

    '백기선(인프런 강의) > 스프링 부트 개념과 활용' 카테고리의 다른 글

    Spring-Boot-Devtools  (0) 2020.04.21
    테스트  (0) 2020.04.16
    프로파일  (0) 2020.04.14
    외부 설정 2부  (0) 2020.04.13
    외부 설정 1부  (0) 2020.04.13
Designed by Tistory.