로깅 : 로그를 남기는 것
System.out.println()와 같이 필요한 정보를 출력하며 시스템의 복잡성을 해결할 수 있다.
또 성능에 관한 통계와 정보를 남길 수 있다.
다양한 로그 라이브러리
System.out.println() : System.out.println()는 활용하기엔 기능이 제한적이다.
또 서버에서 이를 사용하면 실행 속도가 많이 느려진다.
그래서 다른 로그 라이브러리를 사용해서 객체를 만들어 사용해야 한다.
java.util.logging : java에서 기본적으로 제공하는 라이브러리 java.util.logging이 있지만 기능이 많이 없다.
Log4j : 다양한 로그 라이버리 중 Log4j를 가장 많이 사용한다.
Logback : Logback은 Log4j의 단점을 개선하고 기능을 더 추가한 라이브러리이다.
SLF4J
로깅 관련해서 다양한 라이브러리들이 존재한다.
이러한 라이브러리들을 통일된 방식으로 사용하기 위해서 SLF4J를 사용해야한다.
SLF4J는 인터페이스들의 모음이다. (로그 라이브러리를 꽂아 사용하는..?그런 의미)
장점 : 도중에 다른 로그 라이브러리를 사용해도 코드를 수정할 필요가 없다.
maven에 의존성 추가
pom.xml
// org.slf4j 의존성 추가
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
// logback 의존성 추가
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
기본적으로 commons-logging을 사용하는데 이를 제거하면 에러가 발생한다.
그것을 방지하기 위해서 아래 코드를 추가한다.
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.25</version>
</dependency>
logback 설정해주기
SLF4J는 인터페이스이기 때문에 실제로 로그를 남기는
logback 라이브러리를 사용해주기 위해서 설정을 따로 해줘야 한다.
src/main/resources경로에 logback.xml파일명으로 설정해주면 자동으로 인식을 해준다.
logback.xml 설정
1) Appender
로그 출력위치를 정하기 위해서는 Appender를 사용한다. Appender에는 다양한 종류가 있다.
ConsoleAppender: 콘솔에 로그를 출력해준다.
FileAppender : 파일에 로그 메시지를 출력한다.
RollingFileAppender : 로그의 크기가 지정한 용량 이상이 되면 다른 이름의 파일을 출력한다.
DailyRollingFileAppender : 하루를 단위로 로그 메시지를 파일에 출력한다.
SMTPAppender : 로그 메시지를 이메일로 보낸다.
NTEventLogAppender : 윈도우의 이벤트 로그 시스템에 기록한다.
<encoder>부분에 출력될 로그 형식을 작성해주면 된다.
%d : 로그 기록 시간을 의미, { }를 통해 날짜 형식을 정해줄 수 있다.
%n : new line 한 줄 띄워준다.
%msg : 메시지
%logger : 로거 이름의 축약
%c : 로깅이 발생한 카테고리를 출력한다.
%C : 로깅이 발생한 클래스명을 출력한다.
maxHistory : 보관 기간을 설정한다.
2) logger
name : 사용하게 될 패키지 혹은 클래스 명을 입력한다.
level : log의 레벨 중 한 가지 선택한다.
3) root
default값을 저장해준다.
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>%d{HH:mm} %-5level %logger{36} - %msg%n</Pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/tmp/access.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/tmp/access-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<Pattern>%d{HH:mm} %-5level %logger{36} - %msg%n</Pattern>
</encoder>
</appender>
<logger name="org.springframework" level="info"/>
<logger name="kr.or.connect" level="debug"/>
<root level="debug">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
'Spring > 공부' 카테고리의 다른 글
[Spring MVC] XML을 통한 API 다루기 (0) | 2021.02.19 |
---|---|
[Spring MVC] 파일 업로드(multipart) (0) | 2021.02.17 |
[Spring MVC] DispatcherServlet java파일에서 설정해주기 (WebApplicationInitializer) (0) | 2021.02.09 |
[Spring MVC] 세션 이해하고 스프링 적용 (0) | 2021.02.09 |
[Spring MVC] 쿠키 알아보기 (0) | 2021.02.08 |