如何調(diào)整Docker中nginx的日志級(jí)別詳解
Intro
最近發(fā)現(xiàn)我們的一個(gè)應(yīng)用產(chǎn)生了很多日志,而這些日志大多都是 nginx 的 access_log,我們默認(rèn)會(huì)把標(biāo)準(zhǔn)輸出收集到 es 里分析應(yīng)用日志,但是很多都是 access_log 就可能會(huì)掩蓋掉真實(shí)的錯(cuò)誤日志,所以可能有時(shí)候我們并不想輸出這些 access_log,示例如下:

Nginx Dockerfile
去 Github 上扒了一下 Nginx 的 Dockerfile, docker-nginx/Dockerfile at master · nginxinc/docker-nginx (github.com)

可以看到 nginx 默認(rèn)會(huì)把 access_log 和 error_log 鏈接到標(biāo)準(zhǔn)輸出中,這也就是為什么我們?cè)?nbsp; docker logs 或者 kubectl logs 的時(shí)候能夠看到 access_log
我們可以在容器里執(zhí)行 cat /etc/nginx/nginx.conf 來(lái)查看默認(rèn)的 nginx 配置

default nginx conf
從上面可以看出來(lái) error_log 的級(jí)別是 notice,如果有需要也可以配置成 warn/error,具體的日志配置可以參考官方文檔介紹,可配置的日志級(jí)別有:debug, info, notice, warn, error, crit, alert, emerg
access_log 可以使用 off 直接禁用掉或者使用另外一個(gè) path,這樣就不會(huì)直接輸出到標(biāo)準(zhǔn)輸出中,就不會(huì)有那么多的日志了
New conf
知道配置怎么修改了就比較方便了,只需要把我們新改的配置替換掉默認(rèn)的配置就可以了,新的配置如下:
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 里用新的配置覆寫(xiě)默認(rèn)的配置:
# Copy custom nginx config COPY /conf/nginx.conf /etc/nginx/nginx.conf
More
如果你想記錄 access_log 但是不想直接,可以配置 access_log 為另外的文件名即可,就會(huì)寫(xiě)入對(duì)應(yīng)配置的文件中,但不會(huì)直接輸出到標(biāo)準(zhǔn)輸出,也就不會(huì)造成采集的日志很多都是 access_log
如果不想記錄,不關(guān)心 access_log 可以直接使用 off 配置禁用 access_log,如果想選擇性地記錄比如 2xx/3xx 不記錄,其他情況記錄也是可以的,nginx 文檔上也有介紹,可以根據(jù)自己需要進(jìn)行選擇
map $status $loggable {
~^[23] 0;
default 1;
}
access_log /path/to/access.log combined if=$loggable;
References
- https://notestack.io/public/configure-nginx-logging-in-a-docker-container/874f1253-cf1a-4c62-9d2d-467ab23c258d
- https://docs.nginx.com/nginx/admin-guide/monitoring/logging/
- https://github.com/nginxinc/docker-nginx/blob/master/stable/alpine/Dockerfile
到此這篇關(guān)于如何調(diào)整Docker中nginx的日志級(jí)別的文章就介紹到這了,更多相關(guān)Docker中nginx日志級(jí)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker利用nextcloud搭建一個(gè)私有百度云盤(pán)
這篇文章主要介紹了docker利用nextcloud搭建一個(gè)私有百度云盤(pán),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
docker Get https://registry-1.docker.io/v2/:
本文主要介紹了docker Get https://registry-1.docker.io/v2/: net/http: request canceled 報(bào)錯(cuò),具有一定的參考價(jià)值,感興趣的可以了解一下2025-03-03
關(guān)于ROS2安裝與docker環(huán)境使用
大家好,本篇文章主要講的是關(guān)于ROS2安裝與docker環(huán)境使用,感興趣的同學(xué)趕快來(lái)看看吧,對(duì)你有幫助的話(huà)記得收藏一下,方便下次瀏覽2021-12-12
Docker沒(méi)有啟動(dòng)環(huán)境變量的問(wèn)題解決
在使用Docker容器時(shí),有時(shí)候我們會(huì)遇到一個(gè)問(wèn)題,就是在容器中沒(méi)有啟動(dòng)環(huán)境變量,本文主要介紹了Docker沒(méi)有啟動(dòng)環(huán)境變量的問(wèn)題解決,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02

