您好,登錄后才能下訂單哦!
本篇內容主要講解“怎么調整Docker中nginx的日志級別”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么調整Docker中nginx的日志級別”吧!
Intro
Nginx Dockerfile
New conf
More
References
最近發現我們的一個應用產生了很多日志,而這些日志大多都是 nginx 的 access_log,我們默認會把標準輸出收集到 es 里分析應用日志,但是很多都是 access_log 就可能會掩蓋掉真實的錯誤日志,所以可能有時候我們并不想輸出這些 access_log,示例如下:
去 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, emerg
access_log 可以使用 off 直接禁用掉或者使用另外一個 path,這樣就不會直接輸出到標準輸出中,就不會有那么多的日志了
知道配置怎么修改了就比較方便了,只需要把我們新改的配置替換掉默認的配置就可以了,新的配置如下:
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
如果你想記錄 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;
到此,相信大家對“怎么調整Docker中nginx的日志級別”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。