«   2024/11   »
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
Archives
Today
Total
11-11 05:43
관리 메뉴

DevTzu

Spring Slf4j logback - DBAppender 본문

study

Spring Slf4j logback - DBAppender

DevTzu 2019. 2. 27. 18:03
반응형

Spring boot 에서는 logback-spring.xml 파일에 설정해야함

    <!-- DB -->
    <springProperty name="driverClass" source="spring.datasource.driver-class-name"/>
    <springProperty name="url" source="spring.datasource.url"/>
    <springProperty name="user" source="spring.datasource.username"/>
    <springProperty name="password" source="spring.datasource.password"/>
    
    <appender name="DB" class="com.test.package.util.logback.LogDBAppender">
        <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
            <driverClass>${driverClass}</driverClass>
            <url>${url}</url>
            <user>${user}</user>
            <password>${password}</password>
        </connectionSource>
    </appender>


DBAppender는 로그정보를 DB에 insert하는 역할을 한다. Log4j의 JDBCAppender와는 달리 Logback의 DBAppender는 디폴트로 LOGGING_EVENT, LOGGING_EVENT_PROPERTY, LOGGING_EVENT_EXCEPTION의 3가지 테이블을 기본적으로 필요로 한다. 

-LOGGING_EVENT 테이블
LOGGING_EVENT 테이블은 로그메시지, timestamp 등 일반적인 로그 이벤트 정보를 저장하는 역할을 하는 테이블
컬럼명
타입
기능
timestmp
big int
로그 이벤트 발생시점에 대한 타임스탬프 값
formatted_message
text
로깅시점에 전달된 메시지와 파라미터를 이용하여 변환된 메시지
logger_name
varchar
로그를 출력할 당시 사용된 Logger의 name
level_string
varchar
로그를 출력할 당시 level
reference_flag
smallint
reference_flag는 로그 이벤트발생 당시 MDC 혹은 Context 에 저장된 속성이 있어서 LOGGING_EVENT_PROPERTY에 데이터가 저장되는 경우 1의 값을 가지고 로그 이벤트에 Exception 객체에 대한 정보가 있어 LOGGING_EXCEPTION에 저정되어야 할 데이터가 있는 경우 2의 값을 가진다. 두가지 데이터가 모두 있는 경우 3의 값을 가진다.
caller_filename
varchar
로그를 호출한 파일명
caller_class
varchar
로그를 호출한 클래스명
caller_method
varchar
로그를 호출한 메소드명
caller_line
char
로그를 호출한 라인번호
event_id
int
로그 이벤트에 따른 DB의 고유한 키 값



-LOGGING_EVENT_PROPERTY 테이블
LOGGING_EVENT_PROPERTY 테이블은 로깅 이벤트가 발생했을 때 컨텍스트에 저장된 프로퍼티 정보와 MDC에 저장된 정보를 저장하는 용도로 사용되는 테이블
컬럼명
타입
기능
event_id
int
로그 이벤트에 따른 DB의 고유한 키 값
mapped_key
varchar
MDC 혹은 context에 저장된 키 값
mapped_value
text
MDC 혹은 context에 저장된 키에 해당하는 value



-LOGGING_EXCEPTION 테이블
LOGGING_EXCEPTION 테이블은 로깅이벤트가 발생했을 때, 로그메시지와 함께 파라미터로 Exception 객체를 넘겨주는 경우 Exception 정보를 이용하여 stackTrace 정보를 저장하는 테이블
컬럼명
타입
기능
event_id
int
로그 이벤트에 따른 DB의 고유한 키 값
i
smallint
stack trace에 대한 인덱스 정보
trace_line
varchar
해당 stack trace에 대한 메시지


-로그레벨이 ERROR일 경우 해당 로그는 LOGGING_EVENT 테이블에 쌓이게 된다.
log.error("LOGGING_EVENT 테이블 Insert 테스트");

-LOGGING_EVENT_PROPERTY 테이블에 데이터를 쌓는 방법
MDC.clear();
MDC.put("TEST_ID_1", "TEST_VALUE");
log.error("LOGGING_EVENT_PROPERTY 테이블 Insert 테스트", MDC.getCopyOfContextMap());

-LOGGING_EXCEPTION 테이블에 데이터를 쌓는 방법
log.error("LOGGING_EXCEPTION 테이블 Insert 테스트 : {}", new NullPointerException("NullPointerException"));

반응형

'study' 카테고리의 다른 글

JAVA - java.net.UnknownHostException  (0) 2022.03.11
[Spring boot] AWS Tomcat에 war 배포시 404 에러  (0) 2020.01.06
[C to Go] 1. Hello World  (0) 2019.01.07
[C to Go] 0. 학습목표  (0) 2019.01.07
장고(Django) 설치  (0) 2018.08.27
Comments