💬
목차
< 뒤로가기
인쇄

캐모마일 로깅 모듈 가이드

개요

log4j2 기반으로 캐모마일 모듈들이 로그를 남기거나 개발자들이 로그를 남길 수 있도록 제공하는 로깅 모듈이다.

사용법

dependency

<dependency>
  <groupId>net.lotte.chamomile.module</groupId>
  <artifactId>chamomile-logging</artifactId>
</dependency>

제공하는 로깅 목록

주요 수집 내역
에러 로깅 에러 레벨 로그+익셉션 발생 로깅
메서드 추적 로깅 매서드 호출,파라미터,리턴값, 리턴 총 시간 전부 기록(개인정보는 로깅 x)
파일 관리 로깅 파일 업로드,삭제 로그
사용자 엑세스 로깅 로그인 성공,실패,로그아웃,만료 이력 기록
개인정보 관리 로깅 누가 언제,누구들의 어떤 개인정보를 추가하고,읽고,수정하고,삭제했는지 이력 기록

chamomile-web 모듈 추가 시 제공되는 로깅 정보

pom.xml에 chamomile-web 모듈을 추가할 시 http request에서 정보를 가져와 다음과 같은 로그를 남길 수 있다.

  • 세션 아이디 %X{chmm.SessionID}: 요청별로 구분하기 위해 UUID 랜덤으로 생성한 10자리 값.
  • 리퀘스트 아이디 %X{chmm.RequestID}: 요청별로 구분하기 위해 UUID 랜덤으로 생성한 10자리 값.
  • 사용자 아이디 %X{chmm.ClientID}: 현재 요청한 사용자 아이디. 없으면 #anonymous
  • 사용자 아이피 %X{chmm.ClientIP}: 현재 요청한 사용자 아이피
  • url주소 %X{chmm.RequestURL}: 현재 요청한 url 주소

기본 로그 예시
시간, 로그레벨, 리퀘스트 아이디, 세션 아이디, 쓰레드이름, 아이피, 사용자 아이디, 접속 주소, 로거 네임, 로그 메시지

2024-03-04 13:13:25 #INFO request-1303900B5EF5 session-122aa11d-0d3 http-nio-23636-exec-9 0:0:0:0:0:0:0:1 anonymous /api-docs/user  net.lotte.chamomile.module.message.repository.MessageInfoRepositoryImpl findList = []

기본 제공 로거 사용법

  • 캐모마일에는 기본 ChamomileErrorLogger, ChamomileUserAccessLogger, ChamomileFileLogger, ChamomilePrivacyLogger를 제공한다.

  • 콘솔,파일,그외 기타 등등의 appender를 추가하고 싶다면 logger name을 입력하고 appeder를 추가한다.

  • 아래 로거들의 DBAppender는 자동으로 추가되며,

<!-- chamomile logging -->  
<logger name="ChamomileErrorLogger" level="ERROR" additivity="false">  
  <AppenderRef ref="console"/>  
  <AppenderRef ref="errorRollingFile"/>  
</logger>  
<logger name="ChamomileUserAccessLogger" level="INFO" additivity="false">  
  <AppenderRef ref="console"/>  
  <AppenderRef ref="dailyRollingFile"/>  
</logger>  
<logger name="ChamomilePrivacyLogger" level="INFO" additivity="false">  
  <AppenderRef ref="console"/>  
  <AppenderRef ref="dailyRollingFile"/>  
</logger>  
<logger name="ChamomileFileStateLogger" level="INFO" additivity="false">  
  <AppenderRef ref="console"/>  
  <AppenderRef ref="dailyRollingFile"/>  
</logger>

사용자 접속 로그
로거 이름 : ChamomileUserAccessLogger

설명 :
로그인 시도, 성공, 실패, 로그아웃 내역 등을 로깅하는 로거. chamomile-security 모듈로 로그인을 시도하면 자동으로 로깅된다.

제공 메서드 :

LoggingUtils.userAccessLogging(String loginUserId,UserAccessActionType userAccessActionType)

로깅 내역 :

로그 날짜, 리퀘스트 아이디, 세션 아이디, 아이디(로그인 되고 or 로그인 시도한), 접속 ip, 엑세스 내역(로그인 성공,실패,로그아웃,만료(userAccessActionStatus))

디비 테이블 :

CREATE TABLE CHMM_USER_ACCESS_LOGGING  (
    user_access_logging_id BIGINT PRIMARY KEY,
    client_ip VARCHAR(50),              // 사용자 IP
    request_url VARCHAR(255),           // 요청 URL
    request_id VARCHAR(20),             // 요청 ID
    session_id VARCHAR(20),             // 세션 ID
    login_user_id VARCHAR(30),          // 로그인 시도 아이디
    user_access_action_type VARCHAR(6), // 로그인 성공,실패,로그아웃,만료
    log_date TIMESTAMP                  // 로그 시간
);

에러 로그
로거 이름 : ChamomileErrorLogger

설명 :
Excepton 정보를 로깅하는 로거로 chamomile global Exception Handler에 의해 Exception처리가 되었다면 자동으로 로깅된다.

로깅 내역 :

적재하는 내용 : 로그 날짜, 리퀘스트 아이디, 세션 아이디, 사용자 아이디, 접속 IP, 접속 URL,메세지, 예외 발생 원인, 예외 발생 메서드, 예외 발생 라인, 에러 상세내용

제공 메서드 :

LoggingUtils.errorLogging(Exception error);

디비 테이블

CREATE TABLE CHMM_ERROR_LOGGING  (
    error_logging_id BIGINT PRIMARY KEY, // ID
    client_id VARCHAR(30),              // 사용자 ID
    client_ip VARCHAR(50),              // 사용자 IP
    request_url VARCHAR(255),           // 요청 URL
    request_id VARCHAR(20),             // 요청 ID
    session_id VARCHAR(20),             // 세션 ID
    exception_occur_line VARCHAR(255),  // 예외 발생 위치
    exception_method_cause VARCHAR(255),// 예외 발생 원인
    exception_method_info VARCHAR(255), // 예외 발생 메서드 정보
    exception_log_msg TEXT,             // 에러 상세 내용
    log_date TIMESTAMP                  // 에러 발생 시간
);

파일 관리 이력
로거 이름 : ChamomileFileLogger

설명 : 파일 업로드, 다운로드, 삭제 로깅을 위한 로거

로깅 내역

로그 날짜, 리퀘스트 아이디, 세션 아이디, 사용자 아이디, 접속 IP, 접속 URL,업로드 경로,업로드 파일명,파일 사이즈, 파일 업로드/삭제 상태 (fileActionStatus) , 개인정보 파일 여부

제공 메서드

LoggingUtils.fileLogging(String filePath,String fileHash,String originalFileName,FileActionType fileActionType)

디비 테이블

CREATE TABLE CHMM_FILE_LOGGING  (
    file_logging_id BIGINT PRIMARY KEY,
    client_id VARCHAR(30),              // 사용자 ID
    client_ip VARCHAR(50),              // 사용자 IP
    request_url VARCHAR(255),           // 요청 URL
    request_id VARCHAR(20),             // 요청 ID
    session_id VARCHAR(20),             // 세션 ID
    file_action_type VARCHAR(10),       // 파일 관리 상태
    original_file_name VARCHAR(255),   // 원래 파일 이름
    file_size INT,                      // 파일 크기
    file_path VARCHAR(255),             // 실제 파일 위치
    file_hash VARCHAR(20),              // 파일 해시 코드
    log_date TIMESTAMP                  // 로깅 날짜
);

개인정보 관리 로그
로거 이름 : ChamomilePrivacyLogger

설명: 개인정보 로깅을 위한 로거.

제공 메서드:

LoggingUtils.privacyLogging(List<String> privacyUserIdList,List<String> privacyFieldList,PrivacyActionType privacyActionType)

로깅 내역

로그 날짜, 리퀘스트 아이디, 세션 아이디, 사용자 아이디, 접속 ip, 접속 URL, 개인정보 사용자 아이디(privateUserIDList),개인정보 사용자 수(privateUserCount), 개인정보 필드 내역(privateFieldList) ,개인정보 접근/수정/삭제(privateActionType)

디비 테이블

CREATE TABLE CHMM_PRIVACY_LOGGING  (
    privacy_logging_id BIGINT PRIMARY KEY,
    client_id VARCHAR(30),              // 사용자 ID
    client_ip VARCHAR(50),              // 사용자 IP
    request_url VARCHAR(255),           // 요청 URL
    request_id VARCHAR(20),             // 요청 ID
    session_id VARCHAR(20),             // 세션 ID
    private_user_count INT,             // 개인정보 로깅 대상자 수
    privacy_action_type VARCHAR(6),     // 개인정보 접근/수정/삭제 
    privacy_field_list  VARCHAR(500),   // 개인정보 필드
    privacy_user_id_list  VARCHAR(500), // 개인정보 로깅 대상자 아이디 목록
    log_date TIMESTAMP                  // 로깅 시간
);

이전 예외처리
다음 엑셀 모듈