Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Where does dockerized jetty store its logs?

I'm packaging a project into a docker jetty image and I'm trying to access the logs, but no logs.

Dockerfile

FROM jetty:9.2.10
MAINTAINER Me "[email protected]"

ADD ./target/abc-1.0.0 /var/lib/jetty/webapps/ROOT

EXPOSE 8080

Bash script to start docker image:

docker pull me/abc
docker stop abc
docker rm abc
docker run --name='abc' -d -p 10908:8080 -v /var/log/abc:/var/log/jetty me/abc:latest

The image is running, but I'm not seeing any jetty logs in /var/log.

I've tried a docker run -it jetty bash, but not seeing any jetty logs in /var/log either.

Am I missing a parameter to make jetty output logs or does it output it somewhere other than /var/log/jetty?

like image 497
Jan Vladimir Mostert Avatar asked May 15 '15 12:05

Jan Vladimir Mostert


People also ask

Where are Docker logs kept?

By default, Docker stores log files in a dedicated directory on the host using the json-file log driver. The log file directory is /var/lib/docker/containers/<container_id> on the host where the container is running.

Can I access the logs of the Docker container?

The docker logs command shows information logged by a running container. The docker service logs command shows information logged by all containers participating in a service. The information that is logged and the format of the log depends almost entirely on the container's endpoint command.

Where are Docker logs stored Mac?

Docker Daemon Log File If you really want the hard core alternative, then the log files are available at: ~/Library/Containers/com. docker. docker/Data/com.


1 Answers

Why you aren't seeing logs

2 things to note:

  1. Running docker run -it jetty bash will start a new container instead of connecting you to your existing daemonized container.

  2. And it would invoke bash instead of starting jetty in that container, so it won't help you to get logs from either container.

So this interactive container won't help you in any case.

But also...

JettyLogs are disabled anyways

Also, you won't see the logs in the standard location (say, if you tried to use docker exec to read the logs, or to get them in a volume), quite simply because the Jetty Docker file is aptly disabling logging entirely.

If you look at the jetty:9.2.10 Dockerfile, you will see this line:

&& sed -i '/jetty-logging/d' etc/jetty.conf \

Which nicely removes the entire line referencing the jetty-logging.xml default logging configuration.

What to do then?

Reading logs with docker logs

Docker gives you access to the container's standard output.

After you did this:

docker run --name='abc' -d -p 10908:8080 -v /var/log/abc:/var/log/jetty me/abc:latest

You can simply do this:

docker logs abc

And be greeted with somethig similar to this:

Running Jetty: 
2015-05-15 13:33:00.729:INFO::main: Logging initialized @2295ms
2015-05-15 13:33:02.035:INFO:oejs.SetUIDListener:main: Setting umask=02
2015-05-15 13:33:02.102:INFO:oejs.SetUIDListener:main: Opened ServerConnector@73ec519{HTTP/1.1}{0.0.0.0:8080}
2015-05-15 13:33:02.102:INFO:oejs.SetUIDListener:main: Setting GID=999
2015-05-15 13:33:02.106:INFO:oejs.SetUIDListener:main: Setting UID=999
2015-05-15 13:33:02.133:INFO:oejs.Server:main: jetty-9.2.10.v20150310
2015-05-15 13:33:02.170:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:/var/lib/jetty/webapps/] at interval 1
2015-05-15 13:33:02.218:INFO:oejs.ServerConnector:main: Started ServerConnector@73ec519{HTTP/1.1}{0.0.0.0:8080}
2015-05-15 13:33:02.219:INFO:oejs.Server:main: Started @3785ms

Use docker help logs for more details.

Customize

Obviously your other option is to revert what the default Dockerfile for jetty is doing, or to create your own dockerized Jetty.

like image 172
haylem Avatar answered Nov 15 '22 03:11

haylem