본문 바로가기
카테고리 없음

LOGGER 사용법

by cook_code 2023. 6. 25.

지난 포스팅에서 LOGGER의 개념에 대해 학습했습니다. 
오늘은 maven 프로젝트에서 logger를 사용하는 방법에 대한 내용을 다루어보겠습니다. 
지난 포스팅이 궁금하신 분들은 이 링크를 통해 확인해주세요.

로깅과 System.out.println()의 차이점

프로젝트를 하면 수많은 문제에 직면하게 되는데요. 그럴 때 로그를 찍어보거나 디버깅을 하는 경우가 많습니다. 로그를 찍을 때 logger.xx 또는 System.out.println()을 사용해 콘솔에 정보를 띄우기도

howtomakecode.tistory.com

 
로그를 찍기 위해서는 Log4j(Log for Java)라는 라이브러리가 필요합니다. 
라이브러리를 추가해주기 위해 pom.xml에 다음과 같이 의존성을 주입해줍니다.  
 

Log4j, slf4j 의존성 추가 

 

Log4j 라이브러리의 구성요소에 대한 간략한 설명을 접은글로 기재하였습니다. 

더보기

1. spring-context, commons-dbcp2에서 commons-logging 을 exclusion 처리합니다.

(=spring의 기본 로깅인 commons-logging을 제외하는 기능)

※ slf4j(Simple Logging Facade For Java) Logsj를 보완해주는 라이브러리로, 로깅 프레임워크의 추상화를 지원합니다. 

slf4j의존성 추가 시 Log4j를 사용하다 Log4j2로 프레임워크 교체 시 많은 코드 수정을 하지 않아도 됩니다. 

2. slf4j-api, jcl-over-slf4j, slf4j-log4j12 추가 

※ slf4j의 구현체로 Log4j를 사용합니다. 

3. Log4j-core 추가 

 
pom.xml

<!-- Properties  -->
<properties>
    <slf4j.version>1.7.25</slf4j.version>
    <log4j.version>2.11.0</log4j.version>
</properties>

<!-- logging -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j.version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>${slf4j.version}</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>${slf4j.version}</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>${log4j.version}</version>
</dependency>

 
위의 방법으로 로그가 찍히지 않는다면 이렇게 사용해보세요.

<dependencies> 
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.21</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.1.7</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.1.7</version>
    </dependency>
 </dependencies>

 

Log4j의 로그레벨

  • FATAL : 아주 심각한 에러가 발생한 상태
  • ERROR : 요청을 처리하는 중 문제가 발생한 상태
  • WARN : 처리 가능한 문제이지만, 향후 에러의 원인이 될 수 있는 상태
  • INFO : 로그인, 상태변경과 같은 정보성 메세지
  • DEBUG : 개발시 디버그 용도로 사용
  • TRACE : 디버그 레벨이 너무 광범한 것을 해결하기 위해서 좀 더 상세한 상태를 나타냄

로그 찍는 방법 

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

private static final Logger LOGGER = LoggerFactory.getLogger(XYZ.class);

	LOGGER.debug("################## member_save.do start #####################");
	LOGGER.debug("type: {}", type);
	LOGGER.debug("empnos: {}", request.getParameter("empnos"));

 

반응형