Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CHORE] Log Rotation 및 Develop 환경 Log Level 설정 #226

Open
injae-348 opened this issue Nov 29, 2024 · 0 comments
Open

[CHORE] Log Rotation 및 Develop 환경 Log Level 설정 #226

injae-348 opened this issue Nov 29, 2024 · 0 comments
Assignees
Labels
enhancement New feature or request

Comments

@injae-348
Copy link
Collaborator

injae-348 commented Nov 29, 2024

기타 이슈

이슈 설명 (필수)

스프링 Log 구현체 Logback 설정을 통한 log rotation 적용
Develop 환경에서 Log Level 설정

추가 정보

Spring의 경우 spring-boot-starter-weblogging 의존성을 포함하고 있으며, 기본적으로 Logback 구현체를 사용하고 있습니다.

logging:
  level:
    ...

  file: # 로그 파일 설정
    name: /app/log/application.log # name 또는 path 설정 필수

  logback:
    rollingpolicy:
      max-history: 30 # default: 7
      max-file-size: 10MB # default: 10MB
      file-name-pattern: /app/log/application-%d{yyyy-MM-dd}-%i.gz # 압축해서 보관 -> 디스크 절약
      total-size-cap: 5GB # default: 제한 없음

application.yml 파일의 경우 위와 같이 logging 설정이 가능한데
file:name: 혹은 file:path: 가 없을 경우 로그 파일이 생성되지 않습니다.

이전에는 /app/application.log로 만들었지만 log 디렉터리를 하나 추가했습니다.
/app/log/application.log 다시 한번 확인해주세요!

  • max-history: 최대 몇 일간의 로그를 보관할지
  • max-file-size: 각 파일 당 용량을 얼마나 할당할 지
  • file-name-pattern: 이후 생성되는 로그 파일들의 이름 규칙
  • total-size-cap: 로그가 해당 용량을 넘어서면 가장 오래된 로그 파일부터 삭제하여 최대 용량 유지

application.yml 설정이 적용될 경우
docker-compose.yml 파일에서 volumes 부분을 수정해줘야합니다.
파일 마운트에서 디렉터리 마운트로 변경했습니다.

  backend:
    image: audejr123/buddies-docker-repo:latest
    env_file:
      - .env
    ports:
      - "8080:8080"
    volumes:
      - ~/buddies/log:/app/log

    depends_on:
      - mariadb
      - redis

    restart: always

번외

EC2의 /var/lib/docker/container 경로에 쌓이는 로그들은 Docker의 기본 Logging 시스템이 생성한 Log들로 표준 출력과 에러를 자동으로 캡처해 해당 디렉터리에 저장합니다.

ubuntu@buddies-webserver:/var/lib/docker$ ls
buildkit  containers  engine-id  image  network  overlay2  plugins  runtimes  swarm  tmp  volumes
ubuntu@buddies-webserver:/var/lib/docker/containers$ ls
0e27028dc99d2b5ecc4642107312769f923609c85213e10e9bdf78b9fcff5ba9  90cf3d5b61254765af49e3b4694f35f080757037374ab1120b95877a0bfe595c
804df6139241e59ddadb2c4d47955dc7b2653ce340a38f46c802c0b4bad02759

해당 Log에도 rotation을 설정할 수 있으며, 다음과 같이 docker-compose.yml에서 설정 가능합니다.
기본적으로 json 파일 형식으로 저장하며 max-size는 최대 크기, max-file은 최대 갯수, compress는 압축 여부를 나타냅니다.

backend:
  ...
  logging:
    driver: "json-file"
    options:
      max-size: "10m"
      max-file: "10"
      compress: "true" # 로그 파일 압축
@injae-348 injae-348 added the enhancement New feature or request label Nov 29, 2024
@injae-348 injae-348 self-assigned this Nov 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant