JSON 檔案日誌驅動程式
預設情況下,Docker 會捕獲所有容器的標準輸出(和標準錯誤),並使用 JSON 格式將它們寫入檔案。JSON 格式會為每一行標註其來源(stdout
或 stderr
)和時間戳。每個日誌檔案只包含一個容器的資訊。
{
"log": "Log line is here\n",
"stream": "stdout",
"time": "2019-01-01T11:11:11.111111111Z"
}
警告
json-file
日誌記錄驅動程式使用基於檔案的儲存。這些檔案設計為只能由 Docker 守護程序獨佔訪問。使用外部工具與這些檔案互動可能會干擾 Docker 的日誌系統並導致意外行為,應避免這樣做。
用法
要將 json-file
驅動程式用作預設日誌記錄驅動程式,請在 daemon.json
檔案中將 log-driver
和 log-opts
鍵設定為適當的值,該檔案在 Linux 主機上位於 /etc/docker/
,在 Windows Server 上位於 C:\ProgramData\docker\config\
。如果檔案不存在,請先建立它。有關使用 daemon.json
配置 Docker 的更多資訊,請參閱 daemon.json。
以下示例將日誌驅動程式設定為 json-file
,並設定 max-size
和 max-file
選項以啟用自動日誌輪換。
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
注意
daemon.json
配置檔案中的log-opts
配置選項必須以字串形式提供。因此,布林值和數值(例如上例中max-file
的值)必須用引號 ("
) 括起來。
重啟 Docker 以使更改對新建立的容器生效。現有容器不會自動使用新的日誌記錄配置。
您可以透過在 docker container create
或 docker run
中使用 --log-driver
標誌來為特定容器設定日誌記錄驅動程式
$ docker run \
--log-driver json-file --log-opt max-size=10m \
alpine echo hello world
選項
json-file
日誌記錄驅動程式支援以下日誌記錄選項
選項 | 描述 | 示例值 |
---|---|---|
max-size | 日誌在輪換之前的最大大小。一個正整數加上一個表示計量單位的修飾符(k 、m 或 g )。預設為 -1(無限制)。 | --log-opt max-size=10m |
max-file | 可以存在的最大日誌檔案數。如果輪換日誌建立了多餘的檔案,則會刪除最舊的檔案。僅在 max-size 也被設定時有效。一個正整數。預設為 1。 | --log-opt max-file=3 |
labels | 在啟動 Docker 守護程序時應用。此守護程序接受的與日誌記錄相關的標籤的逗號分隔列表。用於高階日誌標籤選項。 | --log-opt labels=production_status,geo |
labels-regex | 與 labels 類似且相容。用於匹配與日誌相關的標籤的正則表示式。用於高階日誌標籤選項。 | --log-opt labels-regex=^(production_status|geo) |
env | 在啟動 Docker 守護程序時應用。此守護程序接受的與日誌記錄相關的環境變數的逗號分隔列表。用於高階日誌標籤選項。 | --log-opt env=os,customer |
env-regex | 與 env 類似且相容。用於匹配與日誌相關的環境變數的正則表示式。用於高階日誌標籤選項。 | --log-opt env-regex=^(os|customer) |
compress | 為輪換的日誌切換壓縮功能。預設為 disabled (停用)。 | --log-opt compress=true |
示例
此示例啟動一個 alpine
容器,該容器最多可以有 3 個日誌檔案,每個檔案不大於 10 MB。
$ docker run -it --log-opt max-size=10m --log-opt max-file=3 alpine ash