개발 무지렁이

[Spring Boot] 로깅 기능 라이브러리 Log4j와 properties 파일: 로그 설정정보 세팅 및 @Slf4j 본문

Backend/스프링부트

[Spring Boot] 로깅 기능 라이브러리 Log4j와 properties 파일: 로그 설정정보 세팅 및 @Slf4j

Gaejirang-e 2022. 12. 24. 19:16

𐂂 로그(Log)
서버에 남는 일련의 기록 (ip주소, os...)

🧸 로깅이란: 로그(Log)를 생성하는 활동

📜 Log4jInit.java

  @WebServlet("/Log4jInit")
  public class Log4jInit extends HttpServlet {
      private static final long serialVersionUID = 1L;
    //work 작업영역의 로그를 관리하는 Logger객체(로그 분류 및 기록) 생성
      private Logger work_log = Logger.getLogger("work");

      public void init(ServletConfig config) throws ServletException {
          //루트 경로에 해당하는 실제 파일 시스템 경로 가져오기
          String prefix = config.getServletContext().getRealPath("/");
          //지정된 이름의(log4j-init-file) 설정된 초기화 매개변수값 가져오기
          String file = config.getInitParameter("log4j-init-file");

          if(file != null) {
              //지정된 .properties 파일을 로드하여 설정정보 가져오기
              PropertyConfigurator.configure(prefix + file);
              //로깅 레벨 (DEBUG, INFO, WARN, ERROR, FATAL)에 따른 로그 메시지 작성
              work_log.debug("Log4J Logging started: " + prefix + file);
          } else {
              work_log.debug("Log4J Is not configured for your Application: " + prefix + file);
          }
      }
  }
🦉 getServletContext()
: 웹 애플리케이션컨텍스트를 반환

🧸 서블릿 컨텍스트(ServletContext)란: 웹 애플리케이션에서 공유되는 정보를 관리하는 객체를 말한다.
  .getRealPath("[특정경로]"): 웹 애플리케이션 내의 특정 경로에 대한 실제 📀파일시스템 경로를 반환

🦉 getInitParameter("log4j-init-file")
: 웹 애플리케이션에서 지정된 이름의 초기화 매개변수값 가져오기

⚠️ web.xml or 어노테이션을 통해 초기화 매개변수값을 설정할 수 있다.
  <context-param>
    <param-name>log4j-init-file</param-name>
    <param-value>/WEB-INF/log4j.properties</param-value>
  </context-param>  

𖠃 로깅 기능 라이브러리 Log4j에서 제공하는 클래스, PropertyConfigurator
로그 설정을 .properties 파일을 통해 구성하고 초기화하는 역할을 한다.

PropertyConfigurator.configure("[properties 파일]");
지정된 properties 파일을 로드하여, ⚙️ 설정정보를 읽어온다.

이 설정정보를 바탕으로 Log4j가 로그 출력방식, 로그 레벨, 로그 파일위치 등을 설정한다.
Logger 인스턴스를 생성하여 로그를 작성할 때, 설정정보에 따라 로그가 기록된다.

🍮 로그 레벨
개발모드: .debug(), .info()
운영모드: .info()

📜 application.yml

  logging:
      level:
          [Directory path]: debug

𐁍 @Slf4j (Simple logging facade for java)
🧸 로깅 퍼사드(Logging Facade)
: 실제 로거는 아니지만, 여러가지 로거를 바꿔서 사용할 수 있는 인터페이스
즉, @Slf4j다양한 로거하나의 통일된 방식으로 사용하는 방법을 제공
Comments