我必须将应用程序(C / C ++)移植到Docker容器。该应用程序写入文件系统中的日志文件。 当应用程序在容器中运行时,如何以及在何处存储日志文件?
答案 0 :(得分:1)
您有两种选择:
/dev/stdout
和/或/dev/stderr
。其归结为“日志收集”以及如何收集这些数据。登录到stdout和stderr可能是最简单的方法,但是如果您想获取和分析有关应用程序的非常特定的日志数据,则无济于事。
Docker支持多个“日志驱动程序”,这将有助于提取,转换日志数据并将其提升到外部源(“ ETL”)。参见:https://docs.docker.com/config/containers/logging/configure/
对于我所有的应用程序,我都使用FluentD和docker日志收集器,因此我可以对数据(https://fluentd.org)进行“智能”处理。
答案 1 :(得分:0)
我建议以下内容来编写应用程序的日志文件,并在运行命令时查看日志的stdout和stderr
$docker logs <docker-name>
这需要更改Dockerfile,这是您在大多数Docker(如nginx,httpd)中都能看到的。
# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/<app-name>/access.log \
&& ln -sf /dev/stderr /var/log/<app-name>/error.log