如何調整Docker中nginx的日誌級別詳解

2022-09-21 04:45:09 字數 1355 閱讀 8503

目錄

最近發現我們的乙個應用產生了很多日誌,而這些日誌大多都是 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,這樣就不會直接輸出到標準輸出中,就不會有那麼多的日誌了

知道配置怎麼修改了就比較方便了,只需要把我們新改的配置替換掉預設的配置就可以了,新的配置如下:

然後在 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

access_log /path/to/access.log combined if=$loggable;

docker 使用docker執行Nginx映象

在docker映象倉庫查詢nginx映象 建立nginx web資料夾,存放nginx的資訊 mkdir p opt nginx web 拷貝配置檔案到nginx web資料夾下 docker run name tmp nginx container d nginx 1.17 docker cp t...

docker推薦啟動mysql與nginx的命令

docker run p 12000 80 v nginx www usr share nginx html v nginx conf etc nginx v nginx logs var log nginx v etc localtime etc localtime ro name xhban n...

Linux下docker安裝恢復Nginx

docker pull nginx 建立資料夾 bash mkdir p data docker nginx00 www data docker nginx00 logs 建立乙個臨時例項,copy配置檔案到我們指定的目錄下,停止並刪除例項 bash docker run name tmp ngin...