Where is a log file with logs from a container?

DockerDocker Compose

Docker Problem Overview


I am running several containers using docker-compose. I can see application logs with command docker-compose logs. However I would like to access raw log file to send it somewhere for example? Where is it located? I guess it's separate log per each container (inside container?) but where I can find it?

Docker Solutions


Solution 1 - Docker

A container's logs can be found in :

/var/lib/docker/containers/<container id>/<container id>-json.log

(if you use the default log format which is json)

Solution 2 - Docker

You can docker inspect each container to see where their logs are:

docker inspect --format='{{.LogPath}}' $INSTANCE_ID

And, in case you were trying to figure out where the logs were to manage their collective size, or adjust parameters of the logging itself you will find the following relevant.

Fixing the amount of space reserved for the logs

This is taken from Request for the ability to clear log history (issue 1083)):

> Docker 1.8 and docker-compose 1.4 there is already exists a method to limit log size using docker compose log driver and log-opt max-size:

mycontainer:
  ...
  log_driver: "json-file"
  log_opt:
    # limit logs to 2MB (20 rotations of 100K each)
    max-size: "100k"
    max-file: "20"

> In docker compose files of version '2' , the syntax changed a bit:

version: '2'
...
mycontainer:
  ...
  logging:
    #limit logs to 200MB (4rotations of 50M each)
    driver: "json-file"
    options:
      max-size: "50m"
      max-file: "4"

(note that in both syntaxes, the numbers are expressed as strings, in quotes)

Possible issue with docker-compose logs not terminating

  • issue 1866: command logs doesn't exit if the container is already stopped

Solution 3 - Docker

To see how much space each container's log is taking up, use this:

docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs ls -hl

(you might need a sudo before ls).

Solution 4 - Docker

docker inspect <containername> | grep log

Solution 5 - Docker

On Windows, the default location is: C:\ProgramData\Docker\containers\<container-id>-json.log.

Solution 6 - Docker

Here is the location for

Windows 10 + WSL 2 (Ubuntu 20.04), Docker version 20.10.2, build 2291f61

Lets say

DOCKER_ARTIFACTS == \\wsl$\docker-desktop-data\version-pack-data\community\docker

Location of container logs can be found in

DOCKER_ARTIFACTS\containers\[Your_container_ID]\[Your_container_ID]-json.log

Here is an example

enter image description here

Solution 7 - Docker

To directly view the logfile in less, I use:

docker inspect $1 | grep 'LogPath' | sed -n "s/^.*\(\/var.*\)\",$/\1/p" | xargs sudo less

run as ./viewLogs.sh CONTAINERNAME

Solution 8 - Docker

As of 8/22/2018, the logs can be found in :

/data/docker/containers/<container id>/<container id>-json.log

Solution 9 - Docker

To see the size of logs per container, you can use this bash command :

for cont_id in $(docker ps -aq); do cont_name=$(docker ps | grep $cont_id | awk '{ print $NF }') && cont_size=$(docker inspect --format='{{.LogPath}}' $cont_id | xargs sudo ls -hl | awk '{ print $5 }') && echo "$cont_name ($cont_id): $cont_size"; done

Example output:

container_name (6eed984b29da): 13M
elegant_albattani (acd8f73aa31e): 2.3G

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser606521View Question on Stackoverflow
Solution 1 - DockerMichaelView Answer on Stackoverflow
Solution 2 - DockerVonCView Answer on Stackoverflow
Solution 3 - DockerThat Brazilian GuyView Answer on Stackoverflow
Solution 4 - DockerVasili PascalView Answer on Stackoverflow
Solution 5 - DockerpmohandasView Answer on Stackoverflow
Solution 6 - DockercraftsmannadeemView Answer on Stackoverflow
Solution 7 - DockericyerasorView Answer on Stackoverflow
Solution 8 - DockerlixzhangView Answer on Stackoverflow
Solution 9 - DockerMathieu RolletView Answer on Stackoverflow