Logging
使 Docker 應用程序寫入標準輸出
我正在部署符合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 拾取的一個。