1. 程式人生 > 實用技巧 >在 docker 中檢視容器日誌

在 docker 中檢視容器日誌

轉自:https://www.cnblogs.com/mr-wuxiansheng/p/11412489.html

命令格式:

$ docker logs [OPTIONS] CONTAINER
Options:
--details 顯示更多的資訊
-f, --follow 跟蹤實時日誌
--since string 顯示自某個timestamp之後的日誌,或相對時間,如42m(即42分鐘)
--tail string 從日誌末尾顯示多少行日誌, 預設是all
-t, --timestamps 顯示時間戳
--until string 顯示自某個timestamp之前的日誌,或相對時間,如42m(即42分鐘)
例子:

檢視指定時間後的日誌,只顯示最後100行:

$ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID
檢視最近30分鐘的日誌:

$ docker logs --since 30m CONTAINER_ID
檢視某時間之後的日誌:

$ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID
檢視某時間段日誌:

$ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID

=================================

開發基於 Docker 的應用時,用好 log 可以大大提高排錯效率,下面就是幾個常用的 log 操作技巧:

轉自:https://cloud.tencent.com/developer/article/1357328

1. 顯示所有 log

# 顯示某個容器的所有log
$ docker logs [OPTIONS] <CONTAINER>
# 顯示 docker-compose 啟動的所有容器的log
$ docker-compose logs

2. 顯示實時 log

效果和Linux的 tail-f filename 一樣,可以把最新內容重新整理顯示到螢幕上。

$ docker logs -f <CONTAINER>

3. 使用 tail 檢視 log 尾部

效果和Linux的 tail-n20filename 一樣,顯示最後20行的內容。

$ docker logs --tail 20 <CONTAINER>

4. 使用 grep 過濾 log

例如查詢所有包含 “error” 的log:

$ docker logs | grep error

5. 根據時間檢視 log

比如只想檢視某個時間點之後的日誌,使用 --since 選項,顯示從指定時間點到最新的日誌:

$ docker logs --since 2018-09-25T12:01:46.452616Z <CONTAINER>

--since指定了開始時間點,還可以指定結束時間點,使用選項 --until,顯示二者之間的日誌:

$ docker logs --since 2018-09-25T12:01:48.551341Z --until 2018-09-25T12:01:48.561714Z <CONTAINER>

6. 組合使用

這些選項都可以放在一起使用,例如:

$ docker logs --tail 10 <CONTAINER> | grep info
$ docker logs -f --since xxx --tail=10 <CONTAINER>

7. 把日誌寫入檔案

把 error 日誌都寫到指定檔案:

$ docker logs -t <CONTAINER> | grep error >> logs_error.txt

可以寫一個指令碼把感興趣的內容寫入檔案,進一步還可以匯入我們的日誌系統,方便檢視。