Logback이란?
스프링 부트에서 기본으로 사용하는 로그 프레임워크
SLF4J : 로그 인터페이스 (API)
Logback : 로그 구현체 (실제 동작)
Log4j2 : 다른 로그 구현체
스프링 부트는 별도의 설정이 없으면 SLF4J + Logback 조합으로 로그를 구성
스프링 부트에서 Logback 사용
logback-spring.xml 파일 추가
logback 설정 파일을 추가해준다.
facility : 로그가 어디에서 발생했는지
suffixPattern : 로그를 어떻게 남길 건지 패턴 지정
property
- SYSLOG_HOST : 로그 서버 IP 주소
- SYSLOG_PORT : 포트 번호
<configuration>
<property name="LOG_PATH" value="logs"/>
<property name="LOG_FILENAME" value="day13.log"/>
<property name="SYSLOG_HOST" value="10.10.10.50"/>
<property name="SYSLOG_PORT" value="514"/>
<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
<syslogHost>${SYSLOG_HOST}</syslogHost>
<port>${SYSLOG_PORT}</port>
<facility>USER</facility>
<suffixPattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %m%n</suffixPattern>
</appender>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %m%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/${LOG_FILENAME}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/${LOG_FILENAME}.%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"/>
<appender-ref ref="SYSLOG"/>
</root>
</configuration>
로그 서버
여러 서버에서 생기는 로그를 하나의 서버(로그 서버)에 모은다.
원래는 NoSQL(Elasticsearch) 시스템을 많이 사용한다.
로그 수신 서버로 동작하게 설정
vi /etc/rsyslog.conf
17, 18, 21, 22번줄 주석 해제

로그 서버 확인
systemctl restart rsyslog
netstat -anlp | grep :514

특정 종류의 로고를 따로 저장
vi /etc/rsyslog.d/50-default.conf
마지막 줄에 설정을 추가해준다.
스프링 부트 프로젝트의 logback-spring.xml 파일 안에
facility에 있는 값을 /var/log/spring-application.log 앞에 넣어준다.
USER로 설정해놨으니까 user.*


로그 파일 생성 + 권한 설정
touch /var/log/spring-application.log
chmod 777 /var/log/spring-application.log

바꾼 후 재시작하고 로그 파일 확인
tail -f로 하면 로그를 계속 실시간으로 확인할 수 있다.
systemctl restart rsyslog
tail -f /var/log/spring-application.log
테스트
/abc/test로 get 요청 보내면 로그가 뜬다.

'BE > Spring Boot' 카테고리의 다른 글
[Spring Boot] AOP란? / AOP 간단 구현 (로깅) (0) | 2025.04.12 |
---|---|
[Spring Boot] 로그(Logging) (0) | 2025.03.29 |
[Spring Boot] CQRS (0) | 2025.03.29 |
[Spring Boot] Gateway에서 인가 처리 (Filter) (0) | 2025.03.21 |
[Spring Boot] Eureka란? / 스프링 부트에서 Eureka, Gateway 설정 (0) | 2025.03.19 |
Logback이란?
스프링 부트에서 기본으로 사용하는 로그 프레임워크
SLF4J : 로그 인터페이스 (API)
Logback : 로그 구현체 (실제 동작)
Log4j2 : 다른 로그 구현체
스프링 부트는 별도의 설정이 없으면 SLF4J + Logback 조합으로 로그를 구성
스프링 부트에서 Logback 사용
logback-spring.xml 파일 추가
logback 설정 파일을 추가해준다.
facility : 로그가 어디에서 발생했는지
suffixPattern : 로그를 어떻게 남길 건지 패턴 지정
property
- SYSLOG_HOST : 로그 서버 IP 주소
- SYSLOG_PORT : 포트 번호
<configuration> <property name="LOG_PATH" value="logs"/> <property name="LOG_FILENAME" value="day13.log"/> <property name="SYSLOG_HOST" value="10.10.10.50"/> <property name="SYSLOG_PORT" value="514"/> <appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender"> <syslogHost>${SYSLOG_HOST}</syslogHost> <port>${SYSLOG_PORT}</port> <facility>USER</facility> <suffixPattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %m%n</suffixPattern> </appender> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %m%n</pattern> </encoder> </appender> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH}/${LOG_FILENAME}</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/${LOG_FILENAME}.%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"/> <appender-ref ref="SYSLOG"/> </root> </configuration>
로그 서버
여러 서버에서 생기는 로그를 하나의 서버(로그 서버)에 모은다.
원래는 NoSQL(Elasticsearch) 시스템을 많이 사용한다.
로그 수신 서버로 동작하게 설정
vi /etc/rsyslog.conf
17, 18, 21, 22번줄 주석 해제

로그 서버 확인
systemctl restart rsyslog netstat -anlp | grep :514

특정 종류의 로고를 따로 저장
vi /etc/rsyslog.d/50-default.conf
마지막 줄에 설정을 추가해준다.
스프링 부트 프로젝트의 logback-spring.xml 파일 안에
facility에 있는 값을 /var/log/spring-application.log 앞에 넣어준다.
USER로 설정해놨으니까 user.*


로그 파일 생성 + 권한 설정
touch /var/log/spring-application.log chmod 777 /var/log/spring-application.log

바꾼 후 재시작하고 로그 파일 확인
tail -f로 하면 로그를 계속 실시간으로 확인할 수 있다.
systemctl restart rsyslog tail -f /var/log/spring-application.log
테스트
/abc/test로 get 요청 보내면 로그가 뜬다.

'BE > Spring Boot' 카테고리의 다른 글
[Spring Boot] AOP란? / AOP 간단 구현 (로깅) (0) | 2025.04.12 |
---|---|
[Spring Boot] 로그(Logging) (0) | 2025.03.29 |
[Spring Boot] CQRS (0) | 2025.03.29 |
[Spring Boot] Gateway에서 인가 처리 (Filter) (0) | 2025.03.21 |
[Spring Boot] Eureka란? / 스프링 부트에서 Eureka, Gateway 설정 (0) | 2025.03.19 |