log4j - Logging Levels

linux

목록 보기
2/5

Log4j란 뭐야?

Log4j는 프로그램이 움직이는 동안 무슨 일이 일어나는지 기록하는 일기장 같은 거야.

이 기록(로그)을 보면 프로그램이 언제 어떤 일을 했고, 문제가 생기면 그걸 고치기 위해 어떤 일이 있었는지 알 수 있어.


쉽게 예를 들어보면...

네가 게임을 만들었다고 상상해 봐. 게임 안에서 이런 일이 일어날 수 있어:

  1. 게임 시작

    "플레이어가 게임을 시작했어요."

  2. 보스 등장

    "스테이지 5에서 보스 몬스터가 나왔어요."

  3. 에러 발생

    "플레이어가 스킬을 사용하려 했는데, 오류가 발생했어요!"

Log4j는 이런 것들을 자동으로 기록해 줘. 나중에 "왜 에러가 났을까?" 하고 궁금할 때 기록을 보면 원인을 쉽게 찾을 수 있어.


왜 로그(Log)가 필요해?

  • 문제 해결: 문제가 생기면 기록을 보고 "뭐가 잘못됐지?"를 찾을 수 있어.
  • 상태 확인: "프로그램이 제대로 돌아가고 있나?" 확인할 때도 기록을 보면 알 수 있어.

Log4j의 특징

  1. 자동으로 기록해 줌

    • 로그를 파일로 저장하거나, 화면에 출력할 수 있어.
    • "내가 언제 뭘 했는지"를 자동으로 적어 준다고 보면 돼.
  2. 중요도에 따라 기록을 나눌 수 있어

    Log4j는 기록의 중요도를 다섯 단계로 나눠서 남길 수 있어:

    • DEBUG: 개발자만 아는 아주 세부적인 기록.
    • INFO: "게임 시작" 같은 일반적인 정보.
    • WARN: "뭔가 이상하긴 한데 큰 문제는 아님" 같은 경고.
    • ERROR: "오류가 발생했지만, 프로그램은 계속 작동할 수 있음."
    • FATAL: "심각한 오류로 프로그램이 멈춤."
  3. 설정하기 쉬움

    • 로그를 남길지 말지, 어디에 기록할지, 어떤 형식으로 적을지 설정할 수 있어.

Log4j를 왜 써?

  • 프로그램의 일기장: Log4j는 프로그램이 일기를 써서 무슨 일이 있었는지 기억하게 도와줘.
  • 문제 해결을 더 쉽게: 게임에서 오류가 나면, Log4j가 적어 둔 내용을 보고 "아, 여기서 문제가 생겼구나!"라고 쉽게 찾을 수 있어.

Logging Levels (로그 레벨)

로그는 얼마나 중요한 정보인지에 따라 6단계로 나눠져 있어.

중학생으로 비유하면, 학교 생활에서의 중요도에 따라 "가벼운 소식"부터 "큰일 난 상황"까지 나누는 거랑 비슷해!


1. DEBUG (디버그): 아주 세부적인 정보

  • "내가 지금 뭐 하고 있는지 상세히 알려줄게!"
  • 주로 개발자들이 버그를 잡을 때 사용하는 로그야.

예시:

  • "게임 캐릭터가 좌표 (10, 20)로 이동 중"
  • "데이터베이스 연결 시도 중"

2. INFO (인포): 그냥 참고로 알아두면 좋은 정보

  • "지금 이 정도 일이 일어났어요!"
  • 중요한 이벤트지만, 당장 문제는 없어.

예시:

  • "게임 시작됨"
  • "사용자가 로그인했음"

3. WARN (경고): 문제가 될 수 있는 일

  • "어? 이거 좀 이상한데, 지금은 괜찮지만 나중에 큰일 날 수도 있어요!"
  • 경고 수준의 문제를 알려주는 로그야.

예시:

  • "게임에서 메모리가 조금 부족해요."
  • "서버 응답이 늦어지고 있음"

4. ERROR (에러): 에러 발생

  • "문제가 생겼어요! 근데 프로그램은 계속 작동할 수 있어요."
  • 에러가 발생했을 때 기록하는 로그야.

예시:

  • "아이템 구매 실패: 서버 응답 없음"
  • "파일 저장 실패"

5. FATAL (치명적): 프로그램이 멈춰야 할 정도로 큰 문제

  • "이거 진짜 심각한 문제예요. 프로그램 못 쓰겠어요!"
  • 치명적인 에러가 발생하면 기록해.

예시:

  • "게임 서버 충돌로 프로그램 종료"
  • "데이터베이스 연결 끊김"

6. TRACE (추적): 디버그보다 더 세밀한 정보

  • "내가 한 발자국 한 발자국 뭘 하는지 다 알려줄게."
  • 거의 모든 걸 기록하니까, 잘 쓰지는 않아.

예시:

  • "함수 A 실행 → 함수 B 실행 → 함수 C 실행"

왜 로그 레벨이 필요할까?

  • 중요한 정보만 골라보기:예를 들어, 에러만 보고 싶을 때 ERROR 레벨만 확인하면 돼.
  • 문제 찾기 쉬움:WARN 로그가 많아지면, "아 이거 나중에 큰 문제가 될 수도 있겠네" 하고 미리 고칠 수 있어.

실습 예시

import org.apache.log4j.Logger;

public class LogExample {
    private static final Logger logger = Logger.getLogger(LogExample.class);

    public static void main(String[] args) {
        logger.trace("이건 TRACE 로그예요.");
        logger.debug("이건 DEBUG 로그예요.");
        logger.info("이건 INFO 로그예요.");
        logger.warn("이건 WARN 로그예요.");
        logger.error("이건 ERROR 로그예요.");
        logger.fatal("이건 FATAL 로그예요.");
    }
}

결론

로그 레벨은 중요한 일을 기록하는 일기장이야.

중요도에 따라 단계별로 나뉘니까, 필요한 정보만 보고 문제를 해결할 수 있어!

"DEBUG"는 아주 가벼운 메모고, "FATAL"은 정말 큰일 난 상황이라고 기억해 두면 돼. 😉

0개의 댓글