描述
僅使用 log 就會將所有查詢(以及回覆的部分)轉儲到標準輸出。有一些選項可以稍微調整輸出。請注意,對於繁忙的伺服器,記錄會產生效能上的影響。
啟用或停用 log 外掛僅影響查詢記錄,來自 CoreDNS 的任何其他記錄都會照常顯示。
語法
log
沒有任何參數時,查詢記錄項目會以常見的日誌格式寫入到 stdout,適用於所有請求。或者,如果您想要/需要稍微更多的控制
log [NAMES...] [FORMAT]
NAMES
是要匹配以進行記錄的名稱列表FORMAT
是要使用的日誌格式(預設為通用日誌格式),{common}
用作通用日誌格式的快捷方式。您也可以使用{combined}
,它會在通用日誌格式中加入查詢操作碼{>opcode}
。
您可以進一步指定要記錄的回應類別
log [NAMES...] [FORMAT] {
class CLASSES...
}
CLASSES
是以空格分隔的回應類別列表,這些回應應該被記錄
回應類別具有以下含義
success
:成功的回應denial
:NXDOMAIN 或 nodata 回應(名稱存在,類型不存在)。nodata 回應會將回傳碼設定為 NOERROR。error
:SERVFAIL、NOTIMP、REFUSED 等。任何指示遠端伺服器不願意解析請求的錯誤。all
:預設值 - 沒有指定任何內容。使用此類別表示無論我們將 "all" 與什麼混合在一起,都會記錄所有訊息。
如果未指定任何類別,則預設為 all
。
日誌格式
您可以指定具有任何佔位符值的自訂日誌格式。Log 支援請求和回應佔位符。
支援以下佔位符
{type}
:請求的 qtype{name}
:請求的 qname{class}
:請求的 qclass{proto}
:使用的協定 (tcp 或 udp){remote}
:用戶端的 IP 位址,對於 IPv6 位址,它們會包含在方括號中:[::1]
{local}
:伺服器的 IP 位址,對於 IPv6 位址,它們會包含在方括號中:[::1]
{size}
:請求大小(以位元組為單位){port}
:用戶端的連接埠{duration}
:回應持續時間{rcode}
:回應 RCODE{rsize}
:原始(未壓縮)回應大小(用戶端可能會收到較小的回應){>rflags}
:回應標誌,會顯示每個設定的標誌,例如「aa, tc」。這也包含 qr 位元{>bufsize}
:查詢中宣告的 EDNS0 緩衝區大小{>do}
:查詢中是否設定了 EDNS0 DO (DNSSEC OK) 位元{>id}
:查詢 ID{>opcode}
:查詢 OPCODE{common}
:預設的通用日誌格式。{combined}
:帶有查詢操作碼的通用日誌格式。{/LABEL}
:如果任何中繼資料標籤包含在{/
和}
之間,則該標籤會被接受為佔位符,佔位符將被相應的中繼資料值取代,如果標籤未定義,則使用預設值-
。請參閱 metadata 外掛以取得更多資訊。
預設的通用日誌格式是
`{remote}:{port} - {>id} "{type} {class} {name} {proto} {size} {>do} {>bufsize}" {rcode} {>rflags} {rsize} {duration}`
每個日誌都將以 log.Infof
輸出,因此一個典型的範例看起來像這樣
[INFO] [::1]:50759 - 29008 "A IN example.org. udp 41 false 4096" NOERROR qr,rd,ra,ad 68 0.037990251s
範例
將所有請求記錄到 stdout
. {
log
whoami
}
自訂日誌格式,適用於所有區域 (.
)
. {
log . "{proto} Request: {name} {type} {>id}"
}
僅記錄 example.org(以及其下)的拒絕 (NXDOMAIN 和 nodata)
. {
log example.org {
class denial
}
}
以組合日誌格式記錄所有未成功解析的查詢。
. {
log . {combined} {
class denial error
}
}
記錄所有沒有錯誤的查詢
. {
log . {
class denial success
}
}
此外,多個語句可以使用 OR 運算,例如,我們可以將上述情況重寫如下
. {
log . {
class denial
class success
}
}