Logging

使 Docker 應用程序寫入標準輸出

  • January 21, 2022

我正在部署符合12 因素諮詢的 3rd-party 應用程序,其中一點告訴應用程序日誌應該列印到 stdout/stderr:然後集群軟體可以收集它。

但是,應用程序只能寫入文件或系統日誌。我該如何列印這些日誌?

nginx Dockerfile中給出了一個驚人的配方:

# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
   && ln -sf /dev/stderr /var/log/nginx/error.log

簡單地說,應用程序可以繼續將其作為文件寫入,但結果行將轉到stdout& stderr

對於 docker 容器中的後台程序,例如使用 exec 連接到 /bin/bash 我可以使用。

echo "test log1" >> /proc/1/fd/1

這會將輸出發送到 pid 1 的標準輸出,這是 docker 拾取的一個。

引用自:https://serverfault.com/questions/599103