고래씌
[Spring] 11-1. 로그 처리 본문
1. 로그처리
☞ log4j.xml 에서 수정을 하면된다!!
▶ log4j : 프로그램 작동시 로그를 넘기기위한 자바기반 오픈소스 라이브러리
로그의 레벨을 지정하여 지정한 레벨 이상의 로그정보만 기록하는 방식으로 작동.
일반 출력문보다 속도나 성능면에서 최적화되어 있음
▶ Appenders : 추가시키는 객체. console창 또는 특정파일에 추가를 함.
- ConsoleAppender : 콘솔창에 로그정보를 출력하는 클래스
- FileAppender : 파일에 로그정보를 출력하는 클래스
<param name="threshold" value="INFO" /> // 현재 콘솔객체에 대한 기본 출력 레벨 설정 |
- layout : 보여지는 출력문구
<param name="ConversionPattern" value="%-5p:[%d{HH:mm:ss.SSS}] %C{1}.%M(%F:%L) - %m%n" /> <!-- %c %C : 클래스명을 표시함. %C{1}의 경우 클래스명이 com.kh.spring.LogTest일때 LogTest의미 %C{2}의 경우 클래스명이 com.kh.spring.LogTest일때 spring.LogTest의미 %d : 로그시간을 출력 -> java.text.SimpleDateFormat과 동일한 출력패턴을 사용함. %M : 로그를 수행한 메소드명 %m : 로그로 전달된 메세지. %n : 개행문자 %F : 파일명을출력. %L : 라인번호를 출력 %p : 로그이벤트명 (INFO, WARN, DEBUG ...) - 그외 - %l : 로깅이 발생한 위치정보 - 링크를 제공 %t : 로그이벤트가 발생한 쓰레드명 %% : %를 출력하기위해 사용 %r : 어플리케이션이 시작된 이후 로깅이 발생한 시점까지의 시간(miliseconds) --> |
▶ DailyRollingFileAppender : 일정기간 단위로 로그파일을 생성하고 기록하도록 도와주는 클래스
<!--
DailyRollingFileAppender : 일정기간 단위로 로그파일을 생성하고 기록하도록 도와주는 클래스
-->
<appender name="dailyLog" class="org.apache.log4j.DailyRollingFileAppender">
<param name="threshold" value="INFO" />
<param name="append" value="true" /> <!-- 이어쓰기 여부 지정 ture(이어쓰기) / false(새로쓰기) -->
<param name="file" value="/logs/kh.log" /> <!-- 파일을 생성할 위치 지정 -->
<param name="datePattern" value=".yyyMMdd" />
<!--
dataPattern속성 미지정시 "매일"자정에 로그파일 교체
dataPattern속성 지정시 : yyyyMM => 매달 로그파일을 교체
yyyyWW => 매주
yyyyMMdd a => 자정과, 정오에 로그파일을 바꿔주는 명령어
-->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p:[%d{HH:mm:ss.SSS}] %C{1}.%M(%F:%L) - %m%n" />
</layout>
</appender>
=> log4j.xml 파일 맨아래에 dailyLog 추가
<!-- jdbc-remix 로그출력 appender추가
내가 실행한 쿼리문, 출력결과, 전달된 매개변수 등 모든 데이터를 콘솔창에 출력해주는 객체
-->
<appender name="sqlLogger" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %m%n" />
</layout>
</appender>
<logger name="jdbc.sqlonly" additivity="false">
<level value="INFO" />
<appender-ref ref="sqlLogger" />
</logger>
<logger name="jdbc.resultsettable" additivity="false">
<level value="INFO" />
<appender-ref ref="sqlLogger" />
</logger>
▶ pom.xml 에 추가
<!-- sql문 콘솔출력용(쿼리문, 결과값을 로깅할 수 있음) -->
<dependency>
<groupId>org.lazyluke</groupId>
<artifactId>log4jdbc-remix</artifactId>
<version>0.2.7</version>
</dependency>
▶ root-context.xml
=> 결과
2. 로깅 레벨
▶ Logging Level
- fatal : 아주 심각한 에러 → 지금은 존재하지 않음
- error : 요청 처리중 발생하는 오류
- warn : 경고성 메시지. 실행에는 문제없지만, 향후 요류가 발생할 경우가 있을 경우 사용
- info : 요청처리중 발생하는 정보성메시지 출력시 사용
- debug : 개발중에 필요한 로그가 있을 경우 사용
- trace : 개발용 debug범위를 한정해서 출력
- Slf4j : 스프링에서 제공하는 logging 추상체
▶ LogTest.java
package com.kh.spring;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class LogTest {
/*
* Logging Level
*
* - fatal : 아주 심각한 에러 → 지금은 존재하지 않음
* - error : 요청 처리중 발생하는 오류
* - warn : 경고성 메시지. 실행에는 문제없지만, 향후 요류가 발생할 경우가 있을 경우 사용
* - info : 요청처리중 발생하는 정보성메시지 출력시 사용
* - debug : 개발중에 필요한 로그가 있을 경우 사용
* - trace : 개발용 debug범위를 한정해서 출력
*
* Slf4j : 스프링에서 제공하는 logging 추상체
*/
public static void main(String[] args) {
log.error("error - {} ", "에러메세지임");
log.warn("warn - {}", "경고메세지");
log.info("info - {}", "인포메세지");
log.debug("debug - {}", "디버그");
log.trace("debug - {}", "트레이스");
}
}
Ctrl - F11 단축키 누르면 Console이 이렇게 바뀐다
'Server > Spring' 카테고리의 다른 글
[Spring] 11-3. 로그인 여부 체크하는 인터셉터 (0) | 2024.01.30 |
---|---|
[Spring] 11-2. 인터셉터 이용해서 로깅 처리 (0) | 2024.01.30 |
[Spring] 10-5. 채팅방 나가기 (0) | 2024.01.30 |
[Spring] 10-4. 채팅방 메세지 통신 (F5를 누르지않아도 바로 생성되도록 작업) (0) | 2024.01.30 |
[Spring] 10-3. 채팅방 통신(채팅방 메세지 추가) (0) | 2024.01.30 |