본문 바로가기
Category/JAVA

logback을 사용하여 log관리하기

by developer__Y 2024. 5. 10.

https://logback.qos.ch/index.html

 

Logback Home

Logback Project Logback is intended as a successor to the popular log4j project, picking up where log4j 1.x leaves off. Logback's architecture is quite generic so as to apply under different circumstances. At present time, logback is divided into three mod

logback.qos.ch

 

 

logback은 기존의 log4j을 개선한 후속버전으로 내부로직을 새로 개선하여 log4j보다 10배이상 빠르고 가볍고 메모리 공간또한 적게 차지한다. 

logback은 logback-core, logback-classic, logback-access로 세가지 모듈로 구성되어있다.

 

logback을 통해서 로그 관리하기

 

logback을 사용하기위해 logback-core, logback-classic , slf4j-api 라이브러리를 설치한다.(스프링의 경우 디펜던시 추가)

public class TestServer {
	public static void main(String args[]) {
		Logger logger = LoggerFactory.getLogger(TestServer.class);
		
		logger.error("error: this is error.");
		logger.warn("warn: this is warn.");
		logger.info("info: this is info.");
		logger.debug("debug this is debug.");
		logger.trace("trace this is trace.");
		
		
		
	}
	
}

 

slf4j의 LoggerFactory 메소드를 이용해 Logger객체를 생성한뒤 Log Level에 따라 원하는 로그를 출력한다.

로그 레벨은 error ~ trace까지 오름차순으로 있으며, trace 레벨은 굉장히 자세하게 로그가 출력되기때문에 운영환경에서는 사용하지 않는것이 좋다.

서비스 곳곳에서 원하는 로그를 출력하는 코드를 작성해준뒤, 특정 디렉토리의 경로에 로그 파일을 만들어 보관하는것이 대다수이므로 Logback에 대한 Configuration 설정을 xml파일로 만들어 properties 디렉토리에 넣어 사용한다.

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOG_HOME" value="D:/test/logs"/>
<property name="contextName" value="testlog"/>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%5p [%d{yyyy-MM-dd HH:mm:ss}] %m%n</Pattern>
</layout>
</appender>

<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/${contextName}.%d{yyyy-MM-dd}.log</FileNamePattern>
<maxHistory>10</maxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%5p [%d{yyyy-MM-dd HH:mm:ss}] %m%n </Pattern>
</layout>
</appender>

<root level="debug">
	<appender-ref ref="STDOUT" />
	<appender-ref ref="ROLLING" />
</root>
</configuration>

 

 

logback의 configuration 설정중

appender는 원하는 기능에 맞춰 사용한다.

ConsoleAppenr :  발생된 log를 Console에 출력한다.

FileAppender : 발생된 log를 File에 저장한다.

SMTPAppender : log를 메일로 발송한다.

DBAppender : log를 DB에 저장한다.

 

각각의 아키텍처들은 아래 공식문서에서 참고하여 사용하면 된다.

https://logback.qos.ch/manual/appenders.html

 

Chapter 4: Appenders

There is so much to tell about the Western country in that day that it is hard to know where to start. One thing sets off a hundred others. The problem is to decide which one to tell first. —JOHN STEINBECK, East of Eden Chapter 4: Appenders What is an Ap

logback.qos.ch

 

위의 Configuration 설정을 한뒤, Test를 해보면, 정상적으로 원하는 경로의 폴더에 log파일들이 쌓이고,

특정 날짜 별로 log파일을 관리할수있다.