관리 메뉴

CASSIE'S BLOG

100-1강 스프링 부트의 문서화와 로깅 남기기 본문

PROGRAMMING/슈퍼코딩 강의 정리

100-1강 스프링 부트의 문서화와 로깅 남기기

ITSCASSIE1107 2024. 3. 6. 18:42

 


어떤 스레드가 실행된다는지 날짜랑 시간이라던지 그런 정보가 없어서 상세한 로그가 필요하다.

보통 콘솔로그는 컴퓨터 껐다키면 다 날라가서 따로 파일로 저장 필요성이 있음

 


로깅 핵심개념: 로그레벨
ERROR: 요청을 처리 발생 오류 로그
WARN: 처리 가능한 문제,
=> 향후 에러의 원인 경고 로그
INFO: 상태변경 같은 정보 로그
DEBUG: 프로그램 디버깅 정보 로그

로거: 로깅을 실행하는 주체
모든 로거: 상위 로거 root의 하위에 있다.

로그 패턴:
로그 메세지 출력 형식 정의한 템플릿
(시간, 정보, 쓰레드 정보 탑재 가능)

보통 로그패턴은 비슷한 패턴을 따르므로 주의할 것


로그어팬더:
실제 로그 기록 목적지 나타냄

콘솔 어팬더: 콘솔에 그래도 출력
파일 어팬더: 로깅 생성 시, 파일 기록
메세지 어팬더: 로깅 생성 시 메세지로 송출


Slf4j 인터페이스와 로깅 구현체

Logback: 스프링 부트 기본 내장

Slf4j 인터페이스를 구현한다. = 로깅을 구현한다.

Logback 설치 및 설정 파일 세팅하기

Logback-spring.xml 세팅 파일 설정
해당 환경 application.yaml config 설정하기

이런 식으로
Logging:
config: classpath:logback-spring-dev.xml




참고 자료 출처: 

https://amaran-th.github.io/Spring/[Spring]%20Logback%EC%9C%BC%EB%A1%9C%20%EB%A1%9C%EA%B9%85(Logging)%ED%95%98%EA%B8%B0/

 

[Spring] Logback으로 로깅(Logging)하기

Logging의 개념과 로깅 라이브러리인 Logback의 사용법에 대해 알아보자

amaran-th.github.io

 

logback은 내장되어있어서 따로 build.gradle에 뭘 적어줄 필요는 없다

 

템플릿 복사해주기

resources>logback-spring-local.xml 하기와 같이 만들어준다. 

 

이건 로컬임 

 

이게 원래 xml파일 만들면 기본값이거든?

 

before

 

after

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 콘솔 로그 출력 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{36}) - %msg%n</pattern>
</encoder>
</appender>

<!-- 루트 로거 설정 -->
<root level="info">
<appender-ref ref="CONSOLE" />
</root>
</configuration>

 

class="ch.qos.logback.core.ConsoleAppender" 
이거 명명하는 부분은 중요함. 
콘솔에 출력을 할 콘솔목적지에관한 어팬더를 등록하는거다. 

 

패턴은 인코더 안에 넣어줘야함

 

 

highlight: 색깔을 하이라이트 하는 거고
logger: 저 부분은 logger이름을 명명해주는 거고 
-5level: 레벨이름을 적어주는거임. 

appender-ref를 통해서 어떤 어팬터를 reference 할건지 설정해준다. 

 

 

dev.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOG_PATH" value="logs" />

<!-- 콘솔 로그 출력 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{36}) - %msg%n</pattern>
</encoder>
</appender>

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${LOG_PATH}/test.log</file>
<append>true</append>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{36}) - %msg%n</pattern>
</encoder>
</appender>

<!-- 루트 로거 설정 -->
<root level="info">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
</configuration>

 

dev는 파일어팬더를 추가함.

append true는 새로운 로그 만들 때마다 이어서 저장하겠다 라는 의미임. 

 

만약에 두개 다른 점을 비교하고 싶으면

 

local로 실행하려면 Active profiles가 local이 되어있어야함.

 

application-local-yaml 파일로 가서

logging: 

 config: classpath:logback-spring-local.xml

 

이렇게 지정을 해줘야함. 

 

 

따로 yaml파일들을 만들어서 이렇게 지정해야함

 

 


application.yaml과 application-local.yaml, application-dev.yaml과 같은 파일은 스프링 부트 애플리케이션의 설정 파일입니다. YAML은 "YAML Ain't Markup Language"의 약자로, 사람이 쉽게 읽고 쓸 수 있는 데이터 직렬화 양식입니다. 주로 설정 파일이나 데이터 직렬화에 사용됩니다.

각각의 파일은 다음과 같은 목적으로 사용됩니다:

application.yaml: 일반적인 애플리케이션 설정에 대한 파일입니다. 이 파일은 모든 환경에서 공통적으로 적용되는 설정을 포함합니다.

application-local.yaml: 로컬 개발 환경에서만 적용되는 설정을 담은 파일입니다. 보통 로컬에서 개발할 때 사용되며, 개발자들이 로컬 환경에 맞게 설정을 조정할 수 있습니다. 예를 들어, 로컬에서는 디버그 로그를 활성화하거나 외부 서비스에 연결하는 설정을 변경할 수 있습니다.

application-dev.yaml: 개발 환경에서 적용되는 설정을 담은 파일입니다. 로컬과는 다르게 공용 개발 서버에서 사용되는 설정을 포함할 수 있습니다. 보통 테스트용 데이터베이스나 외부 서비스의 모의 객체(Mock) 등을 설정합니다.

러한 방식으로 설정을 여러 파일로 나누는 이유는 환경에 따라 다른 설정을 유연하게 관리하고, 코드와 설정을 분리하여 관리 가능한 구조를 유지하기 위함입니다. 개발, 테스트, 운영 등 각 환경에 맞게 설정을 따로 관리함으로써 애플리케이션을 더욱 유연하고 안정적으로 운영할 수 있습니다.

 

 

설정바꾸고 나서 Reload from Disk. 

 

dev는 안 바뀌는데..?

 

 

일단 넘어감. 

반응형