programing

최근 기록을 보기 위한 테일 도커 로그(전체가 아님)

codeshow 2023. 7. 31. 22:00
반응형

최근 기록을 보기 위한 테일 도커 로그(전체가 아님)

리눅스에서 Coreutils tail 명령을 사용하는 경우 로그의 현재 위치에서 로그 파일을 추적할 수 있는 -f 옵션이 제공됩니다(파일의 맨 처음으로 이동하여 모든 내용을 표시하지 않음).

전체 로그를 통과할 때까지 기다리지 않고 도커 로그에서 이 기능을 사용할 수 있습니까?

시도해 본 결과:

docker logs --since 1m somecontainer

그리고.

docker logs -f --since 1m somecontainer

실제로 전체 로그 파일을 통과하고(시간이 오래 걸릴 수 있음) 지정한 시간 범위에 도달하면 화면에 반향을 일으키기 시작하는 것으로 나타납니다.

기다리지 않고 현재 시점에서 미행을 시작할 수 있는 방법이 있습니까?항상 Coreutils tail 명령을 사용하여 외부 파일로 로그아웃하고 해당 파일을 추적하는 것이 최선의 옵션입니까?

를 .docker logs --help도움을 청하여마지막 10줄부터 시작해서 아래를 시도해 보세요.자세한 내용은 여기에 있습니다.

docker logs -f --tail 10 container_name

또는 다음과 같이 시간별(예: 지난 2분 이후)로 로그를 확인할 수 있습니다.

docker logs --since=2m <container_id> // since last 2 minutes
docker logs --since=1h <container_id> // since last 1 hour

--tail 스위치를 사용합니다.

>  docker logs -f <container name> --tail 10

마지막 10개 라인부터 시작하는 로그가 표시됩니다.

당신이 정확하게 하고 있는 것 같고 제가 해보니 예상대로 되는 것 같습니다.기본값이 아닌 로그 드라이버 등을 사용하고 있습니까?

사할수새로파일팔로면려를 사용할 수 .-f --since 0m.

서비스 이름(도커 합성의 경우)을 기반으로 로그를 가져오려면 다음과 같은 단축형을 사용할 수 있습니다(nginx는 서비스 이름의 예입니다).

docker logs -f --since=1m $(docker ps -f name=nginx --quiet)

로그 드라이버의 기본 설정은 JSON 파일 형식이며, 처음부터 파일을 구문 분석하는 것을 포함하여 안정적으로 구문 분석할 수 있는 유일한 방법은 도커가 정확히 하는 것이라고 생각합니다.그래서 저는 당신이 요청하는 것을 정확하게 할 수 있는 옵션이 있는지 확신할 수 없습니다.그러나 기본 JSON 로그 드라이버로 컨테이너를 시작할 때 두 가지 로그 옵션을 조정할 수 있습니다.

  1. max-size: 단일 JSON 로그 파일의 크기를 제한합니다.그런 다음 도커가 새 파일을 만듭니다.기본적으로 무제한(-1)입니다.
  2. max-file: 위에서 설정한 최대 크기까지 생성할 JSON 로그 파일 수를 제한합니다.기본적으로 1로 설정됩니다.

다음 옵션에 대한 자세한 내용은 https://docs.docker.com/config/containers/logging/json-file/ 에서 확인할 수 있습니다.

일반적으로 나는 내 /etc/docker/daemon.json 파일 내의 다음 행을 사용하여 도커 호스트에서 실행되는 모든 컨테이너에 대해 이러한 옵션을 새 기본값으로 설정합니다.

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

이 두 가지 옵션은 최대 3개의 서로 다른 10메가 JSON 로그 파일을 유지하도록 지정합니다.결과적으로 컨테이너당 로그가 20-30메가바이트로 제한됩니다.이 파일을 로드하려면 도커드 프로세스에서 다시 로드를 트리거해야 합니다.killall -HUP dockerd또는systemctl reload docker).

실행 명령 또는 작성 파일 내부의 로그 옵션을 전달하여 개별 컨테이너에서 이를 재정의할 수 있습니다.

docker container run --log-opt max-size=5m --log-opt max-file=2 ...

기존 컨테이너의 로깅 옵션을 변경할 수 있는 방법이 없으므로 이러한 변경사항을 적용하려면 컨테이너를 다시 만들어야 합니다.

결과적으로 도커는 최신 로그를 표시하기 위해 여전히 전체 파일을 구문 분석해야 하지만 로그가 자동으로 회전하는 경우 기본 무제한 로깅 옵션보다 파일 크기가 훨씬 작아집니다.

도커 로그를 읽으십시오. 도움말을 참조하십시오. 현재 로그를 확인하는 데 도움이 됩니다.

도커 로그 -f container_name/id

언급URL : https://stackoverflow.com/questions/52119832/tail-docker-logs-to-see-recent-records-not-all

반응형