IMB
IMB

Reputation: 15889

View error.log and access.log in Apache in Docker?

My Docker has the following in its vhost.conf

<VirtualHost *:80>
    // ...(snipped)
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Viewing these via docker exec in /var/log/apache, doing ls -l shows:

access.log -> /dev/stdout
error.log -> /dev/stderr

What does this mean and is it possible to view their content?

Upvotes: 3

Views: 10425

Answers (1)

David Maze
David Maze

Reputation: 159091

docker logs on the container will show you this log output.

/dev/stdout and /dev/stderr are special "files" that actually point at the current process's standard output and error channels, respectively (they should themselves be symlinks to /proc/self/fd/1 and /proc/self/fd/2). Unless something causes them to get redirected somewhere else, this will become the main output of the container, and that gets captured by Docker's internal log subsystem.

If you wanted to capture these as concrete files on your local system, you could bind mount a local directory over /var/log/apache (with a docker run -v option or Docker Compose ports: option). This would cause an (initially empty) directory to hide the contents of that directory in the container, and when the HTTP daemon wrote out its logs, they'd appear as real files in a directory shared with the host.

You should not need docker exec in normal operation.

Upvotes: 4

Related Questions