前言
日志是MongoDB中一個(gè)非常重要的功能,他保證了數(shù)據(jù)庫(kù)服務(wù)器在意外斷電、自然災(zāi)害下數(shù)據(jù)的完整性 。MongoDB日志記錄了數(shù)據(jù)庫(kù)實(shí)例的健康狀態(tài)、語(yǔ)句的執(zhí)行狀況、資源的消耗情況,所以日志對(duì)于分析數(shù)據(jù)庫(kù)服務(wù)和性能優(yōu)化很有幫助。
因此,很有必要花費(fèi)一些時(shí)間來(lái)學(xué)習(xí)解析一下MongoDB的日志文件。
下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。
日志信息的格式
<日志時(shí)間> <嚴(yán)重級(jí)別> <信息所屬分類(lèi)> [<內(nèi)容>] <消息>
例如 :
2014-11-03T18:28:32.450-0500 I NETWORK [initandlisten] waiting for connections on port 27017
日志信息嚴(yán)重級(jí)別
級(jí)別 | 級(jí)別描述 |
F | Fatal |
E | Error |
W | Warning |
I | Informational, for Verbosity Level of 0 |
D | Debug, for All Verbosity Levels > 0 |
信息所屬分類(lèi)
日志分類(lèi) | 英文 | 分類(lèi)描述 |
登入信息 | ACCESS | 登入訪問(wèn)相關(guān)的信息,例如登錄驗(yàn)證情況。 |
命令信息 | COMMAND | 數(shù)據(jù)庫(kù)執(zhí)行命令相關(guān)信息,例如,查詢(xún)。 |
控制管理信息 | CONTROL | 記錄控制管理相關(guān)的信息,例如數(shù)據(jù)庫(kù)初始化。 |
FTDC信息 | FTDC(full-time diagnostic data ) | 全程檢測(cè)數(shù)據(jù)信息,例如Server的狀態(tài)統(tǒng)計(jì)信息。 |
索引信息 | INDEX | 索引相關(guān)信息,例如索引的創(chuàng)建過(guò)程信息。 |
網(wǎng)絡(luò)信息 | NETWORK | 網(wǎng)絡(luò)相關(guān)信息,例如網(wǎng)絡(luò)連接信息。 |
查詢(xún)信息 | QUERY | 查詢(xún)相關(guān)信息,例如查詢(xún)計(jì)劃信息。 |
副本集信息 | REPL | 副本集相關(guān)信息,例如副本集初始過(guò)程、心跳、回滾等信息 |
分片信息 | SHARDING | 分片相關(guān)信息,例如mongos的啟動(dòng)信息 |
存儲(chǔ)信息 | STORAGE | 存儲(chǔ)相關(guān)信息,例如將 storage 層的數(shù)據(jù)刷入磁盤(pán)的信息。 |
還原信息 | RECOVERY | 還原活動(dòng)相關(guān)的信息 |
日志信息 | JOURNAL | 日志相關(guān)的信息 |
寫(xiě)操作信息 | WRITE | 寫(xiě)操作相關(guān)的信息,例如更新(update)的命令。 |
查詢(xún)?nèi)罩驹敿?xì)等級(jí)
MongoDB將日志詳細(xì)等級(jí)劃分為0~5
1. 0 是MongoDB日志的的默認(rèn)級(jí)別,會(huì)包含 Informational 類(lèi)信息。
2. 1~5 是調(diào)試級(jí)別,會(huì)記錄客戶(hù)端所有的完整請(qǐng)求
查詢(xún)?nèi)罩驹敿?xì)等級(jí)的命令。
db.getLogComponents()
修改日志詳細(xì)等級(jí)
修改日志詳細(xì)等級(jí)的途徑有兩種。
第一種 設(shè)置logComponentVerbosity 參數(shù)來(lái)進(jìn)行修改。
另外還需說(shuō)明的一點(diǎn)是日志分類(lèi)還可以進(jìn)一步細(xì)化,
例如:將systemLog 整體設(shè)置為1,其中 query 子項(xiàng) 和storage子項(xiàng) 設(shè)置為2,而子項(xiàng)storage的子項(xiàng)設(shè)置journal再設(shè)置為1。
修改的具體命令為:
db.adminCommand( { setParameter: 1, logComponentVerbosity: { verbosity: 1, query: { verbosity: 2 }, storage: { verbosity: 2, journal: { verbosity: 1 } } }} )
第二種方法,通過(guò) db.setLogLevel()
進(jìn)行修改。
此種方法多是針對(duì)單一的日志類(lèi)別進(jìn)行修改。另外還有一點(diǎn)需要特別指出,我們有時(shí)候會(huì)通過(guò)db.getLogComponents()
看到級(jí)別日志級(jí)別為-1,其實(shí)-1,代表和其父類(lèi)別的等級(jí)一樣。
例如,我們將query類(lèi)別的日志的詳細(xì)級(jí)別設(shè)置為父類(lèi)( systemLog)的日志詳細(xì)級(jí)別,可以執(zhí)行以下命令:
db.setLogLevel(-1, "query")
上面的兩種方法都是修改,那么能否初始化是就配置呢?其實(shí)是可以的,我們只需要在初始配置文件中加入相應(yīng)的參數(shù)就可以了,在此不再展開(kāi)。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)武林網(wǎng)的支持。
新聞熱點(diǎn)
疑難解答
圖片精選