반응형
전자정부프레임워크에서 로그 기능을 구현하는 방법을 학습합니다. 로그는 시스템의 상태를 파악하고 오류를 추적하며 성능을 분석하는 데 중요한 역할을 합니다.
전자정부프레임워크는 **SLF4J(Simple Logging Facade for Java)**와 Logback을 기본으로 사용하여 로그를 관리할 수 있습니다. 이번 학습에서는 로그 설정부터 기본적인 사용법까지 단계별로 설명합니다.
1. 로그의 중요성
- 문제 디버깅: 시스템 오류 발생 시 문제 원인 파악 가능
- 시스템 모니터링: 애플리케이션 상태를 실시간으로 확인
- 성능 분석: 특정 요청의 처리 속도 및 자원 사용량 확인
- 보안: 사용 기록 및 비정상적인 접근 시도 로그
2. SLF4J와 Logback 설정
전자정부프레임워크는 기본적으로 SLF4J와 Logback을 지원합니다. 이를 통해 손쉽게 로그를 기록할 수 있습니다.
2-1. Logback 설정 파일 작성
src/main/resources/logback.xml:
<configuration>
<!-- 콘솔에 출력되는 로그 설정 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 로그 파일 저장 설정 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 로거 설정 -->
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
</configuration>
3. SLF4J를 이용한 로그 사용법
3-1. Logger 선언
SLF4J를 사용하여 클래스에 로그를 기록하려면 다음과 같이 Logger를 선언합니다.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SampleService {
private static final Logger LOGGER = LoggerFactory.getLogger(SampleService.class);
public void processSample() {
LOGGER.info("Processing sample data...");
try {
// 작업 코드
LOGGER.debug("Debugging information here.");
} catch (Exception e) {
LOGGER.error("An error occurred: ", e);
}
}
}
3-2. 로그 레벨
로그에는 중요도에 따라 다양한 레벨이 있습니다.
- TRACE: 가장 상세한 정보, 주로 디버깅용
- DEBUG: 개발 중 디버깅을 위한 정보
- INFO: 일반적인 정보성 메시지
- WARN: 잠재적인 문제나 중요하지 않은 경고
- ERROR: 실행 중 발생한 심각한 오류
4. 로그 출력 확인
4-1. 콘솔 출력
로그 설정에 따라 ConsoleAppender가 동작하며, Eclipse나 IntelliJ의 콘솔 창에서 로그를 확인할 수 있습니다.
4-2. 파일 출력
RollingFileAppender를 통해 logs/app.log에 로그가 기록됩니다. 날짜별로 로그 파일이 구분되어 저장됩니다.
5. 로그 활용 팁
- 적절한 로그 레벨 사용: 중요한 정보는 INFO, 디버깅은 DEBUG로 구분
- 민감한 정보 주의: 개인정보나 보안 관련 정보는 기록하지 않음
- 로그 크기 관리: maxHistory 설정을 통해 로그 파일이 과도하게 쌓이는 것을 방지
- 로그 분석 도구 사용: ELK(Stack)나 Splunk와 같은 도구를 활용해 로그를 분석
6. 로그 테스트
6-1. Controller 예제
@Controller
public class LogTestController {
private static final Logger LOGGER = LoggerFactory.getLogger(LogTestController.class);
@RequestMapping("/logTest.do")
public String logTest() {
LOGGER.info("INFO level log: /logTest.do is called");
LOGGER.debug("DEBUG level log: Debugging /logTest.do");
LOGGER.warn("WARN level log: Potential issue in /logTest.do");
LOGGER.error("ERROR level log: Simulated error in /logTest.do");
return "logTest";
}
}
6-2. 로그 출력 결과 예시
2024-12-23 10:15:45 [main] INFO LogTestController - INFO level log: /logTest.do is called
2024-12-23 10:15:45 [main] DEBUG LogTestController - DEBUG level log: Debugging /logTest.do
2024-12-23 10:15:45 [main] WARN LogTestController - WARN level log: Potential issue in /logTest.do
2024-12-23 10:15:45 [main] ERROR LogTestController - ERROR level log: Simulated error in /logTest.do
7. 마무리
이번 시간에는 전자정부프레임워크에서 제공하는 로그 기능을 활용하는 방법을 학습했습니다. 로그는 시스템 안정성과 유지보수를 위해 꼭 필요한 기능입니다. 다음에서는 전자정부프레임워크의 화면 구성 및 템플릿 활용을 학습합니다.
반응형
'개발 > 전자정부프레임워크' 카테고리의 다른 글
전자정부프레임워크에서 공통 코드 관리 및 메시지 처리 (2) | 2024.12.24 |
---|---|
전자정부프레임워크의 화면 구성 및 템플릿 활용 (0) | 2024.12.24 |
전자정부프레임워크에서 트랜잭션 처리하기 (0) | 2024.12.24 |
전자정부프레임워크의 MyBatis 활용 기본 (0) | 2024.12.23 |
전자정부프레임워크의 공통 컴포넌트 활용 (0) | 2024.12.23 |