[Spring Boot] 환경설정 분리(yml 파일) + 로그 관리

이지연·2026년 1월 27일

Spring Boot에서 환경별 설정 분리SLF4J/Logback 로깅 시스템을 실무 기준으로 정리한다.


1. 환경설정 분리 (Spring Profiles)

파일 구조

src/main/resources/
├── application.yml          # 기본 + active 지정
├── application-local.yml    # 로컬 개발
├── application-dev.yml      # 개발 서버  
└── application-prod.yml     # 운영 서버 (gitignore)

application.yml (기본 설정)

spring:
  profiles:
    active: local  # 기본 환경
  jpa:
    show-sql: true

server:
  port: 8080

application-local.yml

spring:
  datasource:
    url: jdbc:h2:mem:testdb
    driver-class-name: org.h2.Driver
  jpa:
    hibernate:
      ddl-auto: create-drop
  h2:
    console:
      enabled: true

logging:
  level:
    com.beyond: DEBUG

application-prod.yml (gitignore 필수)

spring:
  datasource:
    url: jdbc:mysql://prod-db:3306/board_prod
    username: ${DB_USER}
    password: ${DB_PASSWORD}
  jpa:
    hibernate:
      ddl-auto: validate

logging:
  level:
    com.beyond: INFO

실행 방법

# local (기본)
mvn spring-boot:run

# prod
mvn spring-boot:run -Dspring.profiles.active=prod
  • 내 실습 프로젝트의 경우 local과 prod로 분리하였다. (*prod는 반드시 gitignore 처리)

2. 로그 관리 (SLF4J + Logback)

로깅 레이어 구조

SLF4J (인터페이스) → Logback (구현체) → 콘솔/파일

Lombok @Slf4j 사용

@Slf4j
@Service
public class AuthorService {
    
    public Author login(String email) {
        log.debug("로그인 시도: {}", email);
        log.info("로그인 성공");
        return authorRepository.findByEmail(email);
    }
}

로그 레벨 (trace < debug < info < warn < error)

local: DEBUG (개발용)
dev:  INFO 
prod: INFO/ERROR (운영 기본)

로그 설정 (application-local.yml)

logging:
  level:
    root: DEBUG
    com.beyond.basic: DEBUG
    org.hibernate.SQL: TRACE  # 쿼리 로그
  pattern:
    console: "%d{HH:mm:ss} [%thread] %-5level %logger{30} - %msg%n"

운영 환경 (application-prod.yml)

logging:
  level:
    root: INFO          # INFO 이상만 출력
    com.beyond: INFO

3. 환경별 설정 비교표

환경DBDDL로그레벨Git
localH2create-dropDEBUGO
devMySQL devvalidateINFOO
prodMySQL prodvalidateINFOX (gitignore)

4. 실제 활용 예시

개발 중 (DEBUG)

12:34:56 [http-nio-8080-exec-1] DEBUG c.b.b.author.AuthorService - 로그인 시도: admin@naver.com
12:34:56 [http-nio-8080-exec-1] TRACE o.h.SQL - select * from author where email=?
12:34:56 [http-nio-8080-exec-1] INFO  c.b.b.author.AuthorService - 로그인 성공

운영 (INFO)

12:34:56 [http-nio-8080-exec-1] INFO  c.b.b.author.AuthorService - 로그인 성공


핵심 정리

환경 분리
- application-{local/dev/prod}.yml
- active: local (기본값 설정)
- prod는 gitignore 필수

로그 관리
- @Slf4j → log.debug/info/error()
- local: DEBUG, prod: INFO 레벨
- {} 파라미터로 안전 출력

환경별 설정 + 로그 레벨 분리로 개발/운영 완벽 분리 완료.

profile
Eazy하게

0개의 댓글