[인프런 - 특별 30% 쿠폰할인!!] 스프링부트를 이용한 웹 프로그래밍: 웹사이트 이렇게 만드는 거예요!
블스님이 선물하는 할인쿠폰
스프링부트를 이용한 웹 프로그래밍: 웹사이트 이렇게 만드는 거예요!
www.inflearn.com
지난 시간에는 log4j2를 이용해서 로그를 출력할 때 콘솔창과 파일에 기록하는 방법에 대해서 살펴봤습니다.
https://hoazzinews.tistory.com/38
Log4j2를 이용한 로깅(logging) 방법 - II
지난 시간에는 log4j2를 사용하기 위한 설정 방법 및 기본 사용 방법에 대해서 살펴봤습니다.https://hoazzinews.tistory.com/37 Log4j2를 이용한 로깅(logging) 방법 - I애플리케이션의 로그는 개발 중에는 디
hoazzinews.tistory.com
파일에 로그를 기록하는 방법은 로그를 관리하는 아주 좋은 방법입니다. 개발자는 실행 중인 애플리케이션에서 문제가 발생하면 언제든지 로그 파일을 통해서 애플리케이션의 문제점을 분석하고 파악할 수 있기 때문입니다. 하지만 아쉬운 점이 있습니다. 지난 시간에 기록된 로그 파일을 다시 보겠습니다.
로그는 쉽게 2개 부분으로 나눌 수 있습니다. 하나는 system 관련 로그이고, 또 하나는 순수하게 개발자가 코딩한 application 관련 로그입니다. 이렇게 하나의 파일에 전체 로그가 섞여 있다면 로그를 분석하는 과정에서 개발자는 스트레스를 받겠죠? 개발자는 대부분 application 관련 로그에 집중하게 됩니다. 물론 system 관련 로그만을 볼 수도 있고요. 이런 아쉬운 부분을 개선하기 위해서는 system 관련 로그와 application 관련 로그를 서로 다른 파일에 기록하면 되겠죠~ 자! 그럼 바로 시작하죠.
1. <File> 어펜더 추가
로그 파일을 분리 하기 위해서 log4j2-dev-file.xml 파일을 열어서 <File> 어펜더를 추가합니다.
<Appenders>
<!-- 콘솔 출력 -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="${LOG_PATTERN}"/>
</Console>
<!-- 로그 파일 기록 :: Root -->
<File name="FileByInfo" fileName="${LOG_PATH}/spring-info.log">
<PatternLayout pattern="${LOG_PATTERN}"/>
<Filters>
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
</File>
<!-- 로그 파일 기록 :: Application -->
<File name="FileForAppByInfo" fileName="${LOG_PATH}/spring-app-info.log">
<PatternLayout pattern="${LOG_PATTERN}"/>
<Filters>
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
</File>
</Appenders>
기존에 있던 'FileByInfo' 어펜더에 'FileForAppByInfo' 어펜더를 추가 했습니다. 'FileForAppByInfo'는 'spring-app-info.log'파일에 로그를 기록합니다.
2. Logger 추가
로그를 분리해서 기록하기 위해서 <Loggers>에 <Logger>를 추가합니다.
<Loggers>
<!-- 기본 로거 설정 -->
<Root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="FileByInfo"/>
</Root>
<!-- 애플리케이션 패키지 로깅 -->
<Logger name="com.office" level="debug" additivity="false">
<AppenderRef ref="Console"/>
<AppenderRef ref="FileForAppByInfo"/>
</Logger>
</Loggers>
<Logger>를 추가했습니다. 추가된 로거는 'com.office' 패키지 이하의 클래스에서 발생한 로그에만 집중합니다. 그리고 'additivity'를 'false'로 설정해서 여기의 로그는 더 이상 상위 로거(<Root>)에 전달하지 않도록 합니다. 결국 애플리케이션의 'com.office' 패키지 이하 클래스에서 발생한 로그는 'FileForAppByInfo' 어펜더에 의해서 처리되고, Root 로그는 'FileByInfo' 어펜더에 의해서 처리됩니다.
3. 실행 및 로그 파일 확인
아쉬운 부분을 수정하는 작업이 끝났습니다. 다시 프로젝트를 실행하고 결과를 확인합니다.
※참고. <Appenders>과 <Loggers>를 다양하게 설정하면 특정 패키지의 로그만 별도의 파일로 분리할 수 있겠죠. 예를 들어 com.office.member 패키지, com.office.reservation 패키지 등으로요.
이번 시간에는 로그 파일을 분리해서 개발자가 로그를 분석할 때 편리하게 관리할 수 있는 방법에 대해서 살펴봤습니다. 다음 시간에는 로그 심각도에 따라 파일을 분리하는 방법에 대해서 살펴보겠습니다.
'spring boot' 카테고리의 다른 글
Log4j2를 이용한 로깅(logging) 방법 - V (0) | 2024.12.12 |
---|---|
Log4j2를 이용한 로깅(logging) 방법 - IV (2) | 2024.12.12 |
Log4j2를 이용한 로깅(logging) 방법 - II (3) | 2024.12.11 |
Log4j2를 이용한 로깅(logging) 방법 - I (2) | 2024.12.11 |
spring boot app을 로컬, 개발 서버, 실행(배포) 서버로 구분해서 실행하기 - II (4) | 2024.11.22 |