JSON File 로깅 드라이버

JSON File 로깅 드라이버 (JSON File logging driver)

기본적으로 Docker는 모든 컨테이너의 표준 출력(및 표준 오류)을 캡처해 JSON 형식을 사용해 파일에 써요. JSON 형식은 각 줄에 그 기원(stdout 또는 stderr)과 타임스탬프를 주석으로 달아요. 각 로그 파일은 하나의 컨테이너에 대한 정보만 담아요.

{
  "log": "Log line is here\n",
  "stream": "stdout",
  "time": "2019-01-01T11:11:11.111111111Z"
}

Warning json-file 로깅 드라이버는 파일 기반 스토리지를 사용해요. 이 파일은 Docker 데몬이 독점적으로 접근하도록 설계됐어요. 외부 도구로 이 파일과 상호작용하면 Docker의 로깅 시스템을 방해하고 예기치 않은 동작을 초래할 수 있으므로 피해야 해요.

출처: 문서

본문

사용법 (Usage)

json-file 드라이버를 기본 로깅 드라이버로 사용하려면 daemon.json 파일에서 log-driverlog-opts 키를 적절한 값으로 설정해요. daemon.json으로 Docker를 구성하는 것에 대한 자세한 내용은 daemon.json을 참고하세요.

Note Docker Desktop을 사용한다면 Docker Desktop Dashboard를 통해 데몬 구성을 편집해요. Settings를 열고 Docker Engine을 선택해요. 자세한 내용은 Docker Engine 설정을 참고하세요.

다음 예시는 로그 드라이버를 json-file로 설정하고 max-sizemax-file 옵션을 설정해 자동 로그 회전을 활성화해요.

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

Note daemon.json 구성 파일의 log-opts 구성 옵션은 문자열로 제공해야 해요. 따라서 부울 및 숫자 값(위 예시의 max-file 값 등)은 따옴표(")로 감싸야 해요.

변경 사항을 적용하려면 Docker를 재시작해요. 이 변경은 새로 생성된 컨테이너에 적용돼요. 기존 컨테이너는 새 로깅 구성을 자동으로 사용하지 않아요.

docker container create 또는 docker run--log-driver 플래그를 사용해 특정 컨테이너의 로깅 드라이버를 설정할 수 있어요:

$ docker run \
      --log-driver json-file --log-opt max-size=10m \
      alpine echo hello world

옵션 (Options)

json-file 로깅 드라이버는 다음 로깅 옵션을 지원해요:

Option Description Example value
max-size 회전되기 전 로그의 최대 크기. 양의 정수 + 단위 수정자(k, m, g; 대소문자 무시). 기본값은 -1(무제한)이에요. --log-opt max-size=10m
max-file 존재할 수 있는 최대 로그 파일 수. 로그 회전으로 초과 파일이 생기면 가장 오래된 파일이 제거돼요. max-size도 설정된 경우에만 유효. 양의 정수. 기본값은 1이에요. --log-opt max-file=3
labels Docker 데몬 시작 시 적용. 이 데몬이 받아들이는 로깅 관련 라벨의 쉼표 구분 목록. 고급 log tag options에서 사용. --log-opt labels=production_status,geo
labels-regex labels와 유사하고 호환됨. 로깅 관련 라벨을 일치시키는 정규식. 고급 log tag options에서 사용. `--log-opt labels-regex=^(production_status
env Docker 데몬 시작 시 적용. 이 데몬이 받아들이는 로깅 관련 환경 변수의 쉼표 구분 목록. 고급 log tag options에서 사용. --log-opt env=os,customer
env-regex env와 유사하고 호환됨. 로깅 관련 환경 변수를 일치시키는 정규식. 고급 log tag options에서 사용. `--log-opt env-regex=^(os
compress 회전된 로그의 압축을 토글. 기본값은 false(압축 없음)이에요. --log-opt compress=true

예시 (Examples)

이 예시는 각각 10MB를 초과하지 않는 최대 3개의 로그 파일을 가질 수 있는 alpine 컨테이너를 시작해요.

$ docker run -it --log-opt max-size=10m --log-opt max-file=3 alpine ash

더 알아보기 (Learn more)