合肥网站开发招聘,网站建设吉金手指排名12,不知道是谁做的网站 输入学号,公司介绍视频调整 Docker 中 nginx 的日志级别Intro最近发现我们的一个应用产生了很多日志#xff0c;而这些日志大多都是 nginx 的 access_log#xff0c;我们默认会把标准输出收集到 es 里分析应用日志#xff0c;但是很多都是 access_log 就可能会掩盖掉真实的错误日志#xff0c;所… 调整 Docker 中 nginx 的日志级别Intro最近发现我们的一个应用产生了很多日志而这些日志大多都是 nginx 的 access_log我们默认会把标准输出收集到 es 里分析应用日志但是很多都是 access_log 就可能会掩盖掉真实的错误日志所以可能有时候我们并不想输出这些 access_log示例如下Nginx Dockerfile去 Github 上扒了一下 Nginx 的 Dockerfile, docker-nginx/Dockerfile at master · nginxinc/docker-nginx (github.com)可以看到 nginx 默认会把 access_log 和 error_log 链接到标准输出中这也就是为什么我们在 docker logs 或者 kubectl logs 的时候能够看到 access_log我们可以在容器里执行 cat /etc/nginx/nginx.conf 来查看默认的 nginx 配置default nginx conf从上面可以看出来 error_log 的级别是 notice如果有需要也可以配置成 warn/error具体的日志配置可以参考官方文档介绍可配置的日志级别有debug, info, notice, warn, error, crit, alert, emergaccess_log 可以使用 off 直接禁用掉或者使用另外一个 path这样就不会直接输出到标准输出中就不会有那么多的日志了New conf知道配置怎么修改了就比较方便了只需要把我们新改的配置替换掉默认的配置就可以了新的配置如下user nginx;
worker_processes auto;error_log /var/log/nginx/error.log error;
pid /var/run/nginx.pid;events {worker_connections 1024;
}http {include /etc/nginx/mime.types;default_type application/octet-stream;access_log off;sendfile on;#tcp_nopush on;keepalive_timeout 65;#gzip on;include /etc/nginx/conf.d/*.conf;
}
然后在 Dockerfile 里用新的配置覆写默认的配置# Copy custom nginx config
COPY /conf/nginx.conf /etc/nginx/nginx.conf
More如果你想记录 access_log 但是不想直接可以配置 access_log 为另外的文件名即可就会写入对应配置的文件中但不会直接输出到标准输出也就不会造成采集的日志很多都是 access_log如果不想记录不关心 access_log 可以直接使用 off 配置禁用 access_log如果想选择性地记录比如 2xx/3xx 不记录其他情况记录也是可以的nginx 文档上也有介绍可以根据自己需要进行选择map $status $loggable {~^[23] 0;default 1;
}
access_log /path/to/access.log combined if$loggable;
Referenceshttps://notestack.io/public/configure-nginx-logging-in-a-docker-container/874f1253-cf1a-4c62-9d2d-467ab23c258dhttps://docs.nginx.com/nginx/admin-guide/monitoring/logging/https://github.com/nginxinc/docker-nginx/blob/master/stable/alpine/Dockerfile