일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 우레탄지퍼
- 엑셀드래그단축키
- 40HQ컨테이너
- 클린코드
- 고급영어단어
- TACKING
- MERN스택
- 나일론지퍼
- AATCC
- 요척합의
- 비리짐
- 영어시간읽기
- 40HQ컨테이너40GP컨테이너차이
- 봉제용어
- 자켓실측
- 와끼
- Armhole Drop
- 미니마카
- WHATTIMEOFTHEDAY
- 지연환가료
- 엑셀자동서식
- 슈퍼코딩
- 웹API
- 암홀트롭
- 헤이큐
- 엑셀필터복사붙여넣기
- 미국영어연음
- 필터링후복사붙여넣기
- 핸드캐리쿠리어차이점
- 비슬론지퍼
- Today
- Total
CASSIE'S BLOG
100-1강 스프링 부트의 문서화와 로깅 남기기 본문
어떤 스레드가 실행된다는지 날짜랑 시간이라던지 그런 정보가 없어서 상세한 로그가 필요하다.
보통 콘솔로그는 컴퓨터 껐다키면 다 날라가서 따로 파일로 저장 필요성이 있음
로깅 핵심개념: 로그레벨
ERROR: 요청을 처리 발생 오류 로그
WARN: 처리 가능한 문제,
=> 향후 에러의 원인 경고 로그
INFO: 상태변경 같은 정보 로그
DEBUG: 프로그램 디버깅 정보 로그
로거: 로깅을 실행하는 주체
모든 로거: 상위 로거 root의 하위에 있다.
로그 패턴:
로그 메세지 출력 형식 정의한 템플릿
(시간, 정보, 쓰레드 정보 탑재 가능)
보통 로그패턴은 비슷한 패턴을 따르므로 주의할 것
로그어팬더:
실제 로그 기록 목적지 나타냄
콘솔 어팬더: 콘솔에 그래도 출력
파일 어팬더: 로깅 생성 시, 파일 기록
메세지 어팬더: 로깅 생성 시 메세지로 송출
Slf4j 인터페이스와 로깅 구현체
Logback: 스프링 부트 기본 내장
Slf4j 인터페이스를 구현한다. = 로깅을 구현한다.
Logback 설치 및 설정 파일 세팅하기
Logback-spring.xml 세팅 파일 설정
해당 환경 application.yaml config 설정하기
이런 식으로
Logging:
config: classpath:logback-spring-dev.xml
참고 자료 출처:
logback은 내장되어있어서 따로 build.gradle에 뭘 적어줄 필요는 없다.
템플릿 복사해주기
resources>logback-spring-local.xml 하기와 같이 만들어준다.
이건 로컬임
이게 원래 xml파일 만들면 기본값이거든?
before
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
after
<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
<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는 안 바뀌는데..?
일단 넘어감.
'PROGRAMMING > 슈퍼코딩 강의 정리' 카테고리의 다른 글
101-1강 스프링 부트 예외 처리하기 (0) | 2024.03.07 |
---|---|
100-2강 스프링 부트의 문서화와 로깅 남기기 (1) | 2024.03.07 |
99-2강 스프링 부트 롬복과 MapStruct 사용하기 (0) | 2024.03.05 |
99-1강 스프링 부트 롬복과 MapStruct 사용하기 (0) | 2024.03.04 |
98강 Big picture (부제: 스프링 부트 좀 더 사용하기) (0) | 2024.03.04 |