Nginx在文件和docker日志收集器中都有日志

Nginx在文件和docker日志收集器中都有日志,docker,nginx,logging,symlink,nginx-log,Docker,Nginx,Logging,Symlink,Nginx Log,我正在部署一个Nginx容器,在标准Dockerfile中,使用这些命令将日志重定向到容器日志 RUN ln -sf /dev/stdout /var/log/nginx/access.log \ && ln -sf /dev/stderr /var/log/nginx/error.log 如果我删除上述命令,那么日志将按预期写入access.log和error.log文件。 如何将日志保存在文件中并发送到容器日志?您可以尝试将日志写入文件,然后在入口点跟踪文件 tai

我正在部署一个
Nginx
容器,在标准
Dockerfile
中,使用这些命令将日志重定向到容器日志

RUN ln -sf /dev/stdout /var/log/nginx/access.log \
    && ln -sf /dev/stderr /var/log/nginx/error.log
如果我删除上述命令,那么日志将按预期写入
access.log
error.log
文件。
如何将日志保存在文件中并发送到容器日志?

您可以尝试将日志写入文件,然后在入口点跟踪文件

tail-f/var/log/nginx/access.log/var/log/nginx/error.log


1-下面的命令没有将
/var/log/nginx/access.log
的内容重定向到
/dev/stdout
,而是创建了一个从
/dev/stdout
/var/log/nginx/access.log
的符号链接。换句话说,
/var/log/nginx/access.log
只是一个符号链接

ln -sf /dev/stdout /var/log/nginx/access.log

2-不建议将文件存储在docker容器中,原因有二。首先,重新创建容器后,文件将丢失。第二,文件可能会增长到巨大的大小,特别是如果这些文件上没有日志旋转的话。您可以使用FluentD或配置docker本身将日志转发到外部服务器或主机节点上的文件,而不是将副本保存在容器中。

这是什么问题?它没有显示在容器日志中,我在容器日志中看到“无可用日志”可能需要检查脚本。您可以在这里共享脚本吗?Dockerfile
ENTRYPOINT[“/etc/nginx/docker ENTRYPOINT.sh”]CMD[“nginx”、“-g”、“守护进程关闭;”]
docker-ENTRYPOINT.sh
#/bin/sh tail-f/dev/stdout/var/log/nginx/access.log&&tail-f/dev/stderr/var/log/nginx/error.log
# ls -alh /var/log/nginx/access.log
lrwxrwxrwx 1 root root 11 Nov 23 01:12 /var/log/nginx/access.log -> /dev/stdout