SLF4J 및 Logback 활용

SLF4J(Simple Logging Facade for Java)와 Logback을 활용하여 애플리케이션의 로깅을 관리함.

로거 생성 및 로그 출력

각 클래스에서 로깅을 위해 Logger 객체를 생성하여 다양한 레벨의 로그를 출력함.

// 로거 생성
private Logger logger = LoggerFactory.getLogger(this.getClass());

// 로그 출력 예제
logger.trace("RegisterController trace log...");
logger.debug("RegisterController debug log...");
logger.info("RegisterController info log...");
logger.warn("RegisterController warn log...");
logger.error("RegisterController error log...");

예외 처리 시 로깅 적용

try {
    conn = getConnection();
    psmt = conn.prepareStatement(SQL.INSERT_CUSTOMER);
    psmt.setString(1, dto.getCustId());
    psmt.setString(2, dto.getName());
    psmt.setString(3, dto.getHp());
    psmt.setString(4, dto.getAddr());
    psmt.executeUpdate();
    closeAll();
} catch (Exception e) {
    e.printStackTrace();
    logger.error(e.getMessage()); // 로그 기록
}

Logback 설정 파일 (logback.xml)

콘솔 및 파일 로그 설정

<configuration>

  <!-- 콘솔 어펜더 -->
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%kvp- %msg%n</pattern>
    </encoder>
  </appender>

  <!-- 파일 어펜더 설정 -->
  <property name="NAME" value="ch11"/>
  <property name="PATH" value="/logs/"/>

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${PATH}/${NAME}.log</file>
    <append>true</append>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%kvp- %msg%n</pattern>
    </encoder>
  </appender>

  <!-- 로그 레벨 설정 -->
  <root level="debug">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="FILE"/>
  </root>

</configuration>