dockerized jetty 在哪里存储日志?
Where does dockerized jetty store its logs?
我正在将项目打包到 docker 码头图像中,我正在尝试访问日志,但没有日志。
Docker 文件
FROM jetty:9.2.10
MAINTAINER Me "me@me.com"
ADD ./target/abc-1.0.0 /var/lib/jetty/webapps/ROOT
EXPOSE 8080
Bash 脚本启动 docker 图片:
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
图像是 运行,但我在 /var/log
中没有看到任何码头日志。
我试过 docker run -it jetty bash
,但在 /var/log
中也没有看到任何码头日志。
我是不是缺少制作码头输出日志的参数,或者它是否将其输出到 /var/log/jetty
以外的其他地方?
为什么您看不到日志
2 条注意事项:
运行 docker run -it jetty bash
将启动一个新容器,而不是将您连接到现有的守护进程容器。
并且它会调用 bash 而不是在该容器中启动码头,因此它不会帮助您从任何一个容器获取日志。
所以这个交互式容器无论如何都帮不了你。
而且...
JettyLogs 无论如何都被禁用了
此外,您不会在标准位置看到日志(例如,如果您尝试使用 docker exec
来读取日志,或将它们放入卷中),很简单,因为 Jetty Docker 文件恰当地完全禁用日志记录。
如果您查看 jetty:9.2.10 Dockerfile,您将看到这一行:
&& sed -i '/jetty-logging/d' etc/jetty.conf \
这很好地删除了引用 jetty-logging.xml 默认日志记录配置的整行。
那怎么办?
使用 docker logs
读取日志
Docker 允许您访问容器的标准输出。
完成后:
docker run --name='abc' -d -p 10908:8080 -v /var/log/abc:/var/log/jetty me/abc:latest
您可以简单地这样做:
docker logs abc
并收到类似这样的问候语:
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
使用 docker help logs
获取更多详细信息。
自定义
显然,您的另一个选择是恢复默认的 Dockerjetty 文件正在执行的操作,或者创建您自己的 dockerized Jetty。
我正在将项目打包到 docker 码头图像中,我正在尝试访问日志,但没有日志。
Docker 文件
FROM jetty:9.2.10
MAINTAINER Me "me@me.com"
ADD ./target/abc-1.0.0 /var/lib/jetty/webapps/ROOT
EXPOSE 8080
Bash 脚本启动 docker 图片:
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
图像是 运行,但我在 /var/log
中没有看到任何码头日志。
我试过 docker run -it jetty bash
,但在 /var/log
中也没有看到任何码头日志。
我是不是缺少制作码头输出日志的参数,或者它是否将其输出到 /var/log/jetty
以外的其他地方?
为什么您看不到日志
2 条注意事项:
运行
docker run -it jetty bash
将启动一个新容器,而不是将您连接到现有的守护进程容器。并且它会调用 bash 而不是在该容器中启动码头,因此它不会帮助您从任何一个容器获取日志。
所以这个交互式容器无论如何都帮不了你。
而且...
JettyLogs 无论如何都被禁用了
此外,您不会在标准位置看到日志(例如,如果您尝试使用 docker exec
来读取日志,或将它们放入卷中),很简单,因为 Jetty Docker 文件恰当地完全禁用日志记录。
如果您查看 jetty:9.2.10 Dockerfile,您将看到这一行:
&& sed -i '/jetty-logging/d' etc/jetty.conf \
这很好地删除了引用 jetty-logging.xml 默认日志记录配置的整行。
那怎么办?
使用 docker logs
读取日志
Docker 允许您访问容器的标准输出。
完成后:
docker run --name='abc' -d -p 10908:8080 -v /var/log/abc:/var/log/jetty me/abc:latest
您可以简单地这样做:
docker logs abc
并收到类似这样的问候语:
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
使用 docker help logs
获取更多详细信息。
自定义
显然,您的另一个选择是恢复默认的 Dockerjetty 文件正在执行的操作,或者创建您自己的 dockerized Jetty。