Engineering/Docker

docker logs 파일로 저장

부스 boos 2022. 11. 30. 16:44
728x90

 docker logs <컨테이너> 명령어로 컨테이너의 로그를 확인하려면 스크롤이 되면서 처음부터 마지막 까지 화면에 출력된다.

 linux 에서 docker 명령어를 실행했는데도 파이프(|) 와 함께 more 나 less 명령어와 같이 보려고 해도 안된다. 어쩔수없이 파일로 저장해서 살펴보는 수 밖에 없을거 같다.

 

 실행 중인 컨테이너는 docker ps 로 확인.

# docker ps
CONTAINER ID   IMAGE                              COMMAND                  CREATED          STATUS          PORTS      NAMES
8e947fa9de7f   xxx.io/images/test-webapp:v1.2.0   "java -jar -Xms4g -X…"   14 seconds ago   Up 12 seconds   8084/tcp   determined_curran

 

 컨테이너 명을 따로 지정하지 않았다면 자동 생성된 컨테이너 명을 사용하거나 컨테이너 ID 를 이용할 수 있다.

- docker logs {container} > "저장할파일명" 2>&1

# docker logs backend > log1.txt
: 컨테이너 내에서 발생한 표준출력(stodout, 1) 을 log1.txt 로 redirect

# docker logs backend > log1.txt 2>&1
: stderr(2) 를 stdout(1) 와 함께 log1.txt 에 redirect

 

 

 docker 문서를 확인해보니 아래 명령어로 실제 로그 파일이 저장되는 위치를 확인할 수 있다.

docker inspect --format='{{.LogPath}}' containername

 

 아래 처럼 파일이 발견이 되는데, 이렇게 하면 tail -f "파일명"으로 live 로 로그 내용를 확인할 수 있다.

/var/lib/docker/containers/f1c22af098cc8c92a2db85602ef937120c6b44862c3039264a1b89c92da77fb2/f1c22af098cc8c92a2db85602ef937120c6b44862c309264a1b89c92da77fb2-json.log

 

참고

https://stackoverflow.com/questions/41144589/how-to-redirect-docker-container-logs-to-a-single-file