728x90
반응형
Log4j
- 로그를 효율적으로 남길 수 있는 기능들이 구현되어있는 라이브러리
- 각 로그마다 등급을 설정하고 일정 등급 이상의 로그만 보이도록 설정할 수 있다.
Logger
- 각 클래스에 장착하면 해당 클래스에서 발생하는 로그를 수집하는 객체
- 발생하는 로그들을 등급별로 수집하여 Appender로 전송하는 역할을 한다.
Appender
- 수집된 로그들을 출력하는 장소
- 파일, 콘솔, DB, 웹 등으로 발생한 로그들을 출력할 수 있다.
Layout
- 로그를 출력하는 모양을 설정할 수 있다.
Log4j loggin level (priority)
- OFF : 모든 등급의 로그를 끔
- FATAL : 아주 심각한 로그를 작성할 때 사용하는 등급 (FATAL만 출력됨)
- ERROR : 에러 발생 로그를 작성할 때 등급의 로그를 작성할 때 사용하는 등급 (ERROR보다 심각한 로그만 출력됨)
- WARN : 경고 로그를 작성할 때 사용하는 등급 (WARN보다 심각한 로그만 출력됨)
- INFO : 일반적인 정보 로그를 작성할 때 사용하는 등급 (INFO보다 심각한 로그만 출력됨)
- DEBUG : 디버깅 용도로 로그를 작성할 때 사용하는 등급 (DEBUG보다 심각한 로그만 출력됨)
- TRACE : 에러를 추적하기 위한 정밀한 로그를 작성할 때 사용하는 등급 (모든 로그가 출력됨)
- ALL : 모든 로그를 출력함
log4j.xml 설정
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<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[%d{HH:mm:ss}]%n" />
</layout>
</appender>
<appender name="myfile" class="org.apache.log4j.FileAppender">
<param name="file" value="/log/mylog.txt"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m[%d{HH:mm:ss}]%n" />
</layout>
</appender>
<appender name="myfile2" class="org.apache.log4j.FileAppender">
<param name="file" value="/log/mylog2.html"/>
<layout class="org.apache.log4j.HTMLLayout" />
</appender>
<!-- Application Loggers -->
<logger name="com.ezen.springmvc">
<level value="error" />
</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="warn" />
<appender-ref ref="console" />
<appender-ref ref="myfile" />
<appender-ref ref="myfile2" />
</root>
</log4j:configuration>
예시
package com.ezen.springmvc;
import java.util.Date;
import java.util.Locale;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.ezen.springmvc.model.Student;
@Controller
public class HomeController {
// 이 클래스에서 발생하는 로그들을 모두 log4j에 전달하는 객체
private static Logger log = LogManager.getLogger(HomeController.class);
@Autowired
Student student;
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
log.info(student);
log.info("hello Controller!");
int sum = 0;
for (int i = 0; i < 10; ++i) {
log.debug(String.format("현재 sum은 %d, i는 %d이므로 %d + %d가 되어서 다음에 출력될 값은 %d\n", sum, i, sum, i, sum + i));
log.info(sum += i);
}
log.fatal("FATAL만 보임");
model.addAttribute("serverTime", new Date());
return "home";
}
}
728x90
반응형
'Spring' 카테고리의 다른 글
[Spring] Controller (0) | 2023.07.04 |
---|---|
[Spring] Lombok (0) | 2023.07.04 |
[Spring] JUnit (0) | 2023.07.04 |
[Spring] 메이븐(Maven) (0) | 2023.07.04 |
[Spring] 의존성 주입 (0) | 2023.07.03 |