728x90
자바를 하게되면 콘솔에 데이터를 출력하기 위해 System.out.println()을 사용합니다. 하지만 스프링에서는 이를 사용할 필요없이 log4j라는 라이브러리가 로그 관련한 기능들을 관리해줍니다.
이 글은 STS(Spring toos Suite)로 생성한 스프링 프로젝트 기준으로 작성되었습니다. STS를 이용하여 프로젝트를 생성하는 방법은 가장 하단에 관련 글을 포스트합니다.
이 글은 자바웹을 다루는 기술 책을 참고하여 작성하였습니다.
log4j
스프링으로 개발할때 보면 콘솔에 위와 같은 엄청 많은 로그들이 출력되는데 이 모든게 log4j 덕분입니다. 개발할 당시에 사용했던 로그 메시지들은 실제로 서비스할 때 전혀 필요없게 됩니다. 그럴 경우 일일이 찾아서 해당 로그들을 삭제해주어야 하는데 이는 번거롭기 짝이 없습니다. 이럴때 필요한 것이 log4j입니다.
log4j.xml 태그
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
</layout>
</appender>
<!-- Application Loggers -->
<logger name="com.myspring.pro27">
<level value="info" />
</logger>
<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
<level value="info" />
</logger>
<logger name="org.springframework.beans">
<level value="info" />
</logger>
<logger name="org.springframework.context">
<level value="info" />
</logger>
<logger name="org.springframework.web">
<level value="info" />
</logger>
<!-- Root Logger -->
<root>
<priority value="debug" />
<appender-ref ref="console" />
</root>
</log4j:configuration>
태그 | 설명 |
<appender> | 로그의 출력 위치(파일, 콘솔, DB등)를 결정합니다. |
<layout> | appender가 어디에 출력할 것인지에 대한 태그였다면 layout은 어떤 형식으로 로그를 출력할지 정해줍니다. |
<logger> | 로깅 메시지를 appender에 전달합니다. logger는 6단계의 레벨을 가지며, 레벨을 가지고 출력여부를 결정합니다. |
appender가 가지는 여러가지 클래스
appender 클래스 | 설명 |
ConsoleAppender | org.apache.log4j.ConsoleAppender 클래스로, 콘솔에 로그 메시지를 출력합니다. |
FileAppender | org.apache.log4j.FileAppender 클래스로, 파일에 로그 메시지를 출력합니다. |
RollingFileAppender | org.apache.log4j.rolling.RollingFileAppender 클래스로, 파일 크기가 일정 기준을 넘으면 기존 파일을 백업 파일로 바꾸로 처음부터 로그를 기록합니다. |
DailyRollingAppender | org.apache.log4j.rolling.DailyRollingFileAppender 클래스로, 설정한 기간 단위로 새 파일을 만들어 로그 메시지를 기록합니다. |
PatternLayout 클래스에서 사용되는 속성들
속성 | 설명 |
%p | debug, info 등 로그 레벨 이름 출력 |
%m | 로그 메시지 출력 |
%d | 로깅 이벤트 발생 시각 출력 (yyyy-MM-dd HH:mm:ss) |
%c | 로깅 메시지 앞에 전체 패키지 이름이나 전체 파일 이름 출력 |
이외에도 더 많이 있으니 직접 찾아보시기 바랍니다.
http://logging.apache.org/log4j/1.2/manual.html
log4j의 여러 가지 로그 레벨
레벨 | 설명 |
FATAL(6레벨) | 시스템 차원에서 심각한 문제가 발생했을 때의 레벨입니다. |
ERROR | 실행 중 문제가 발생한 상태를 나타냅니다. |
WARN | 시스템 오류의 원인이 될 수 있는 메시지를 나타냅니다. |
INFO | 로그인, 상태 변경과 같은 실제 애플리케이션 운영과 관련된 정보를 출력합니다. |
DEBUG | 개발 시 디버깅 용도로 사용한 메시지를 나타냅니다. |
TRACE(1단계) | DEBUG보다 상세한 로깅 정보를 출력합니다. |
가장 낮은 TRACE를 시작해 FATAL 레벨까지 있습니다. 지정한 레벨보다 낮은 레벨의 메시지들은 출력되지 않지만, 그보다 높은 레벨의 메시지들은 출력됩니다.
만약 INFO로 설정했다면 DEBUG와 TRACE 관련 메시지는 출력되지 않지만, 그보다 높은 나머지 3레벨은 INFO와 같이 출력됩니다.
log4j 사용법
import org.apache.log4j.Logger;
public class Log4jExample {
private static final Logger logger = Logger.getLogger(Log4jExample.class);
public static void main(String[] args) {
logger.debug("디버그 메시지");
logger.info("정보 메시지");
logger.warn("경고 메시지");
logger.error("오류 메시지");
logger.fatal("심각한 오류 메시지");
}
}
728x90
'STUDY > SpringLegacy' 카테고리의 다른 글
[Spring] @Resource, @Autowired, @Inject 차이 (0) | 2024.05.21 |
---|---|
[Spring] [JS] SSE (Server-Sent Events) 사용하기 (0) | 2024.05.21 |
[Spring] Log4j2 사용해 상세한 SQL 쿼리 로그 출력 설정 (0) | 2024.04.29 |
[Spring] Lombok 설치 및 STS 연동하기 (0) | 2024.04.24 |
[Spring] mybatis Parameter '파라미터명' not found 에러 (0) | 2024.04.24 |