FISCO BCOS日志規(guī)范有哪些,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
網(wǎng)站設(shè)計(jì)制作過(guò)程拒絕使用模板建站;使用PHP+MYSQL原生開發(fā)可交付網(wǎng)站源代碼;符合網(wǎng)站優(yōu)化排名的后臺(tái)管理系統(tǒng);成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)收費(fèi)合理;免費(fèi)進(jìn)行網(wǎng)站備案等企業(yè)網(wǎng)站建設(shè)一條龍服務(wù).我們是一家持續(xù)穩(wěn)定運(yùn)營(yíng)了十多年的成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司。
FISCO BCOS日志規(guī)范
為了使日志輸出更加友好,F(xiàn)ISCO BCOS 2.0設(shè)計(jì)了通用的日志格式,并根據(jù)日志輸出信息的重要性對(duì)日志進(jìn)行了分級(jí)。
此外,為了清晰地區(qū)分各模塊日志,F(xiàn)ISCO BCOS 2.0為各模塊設(shè)計(jì)了日志關(guān)鍵字,并設(shè)計(jì)了各種宏來(lái)確保日志輸出格式一致、方便寫日志輸出代碼。
本節(jié)從日志格式、日志級(jí)別以及日志關(guān)鍵字三個(gè)方面介紹FISCO BCOS日志規(guī)范。
通用日志格式
FISCO BCOS所有群組的日志均輸出到節(jié)點(diǎn)log目錄下的 log_%YYYY%mm%dd%HH.%MM 文件中,該日志文件每1個(gè)小時(shí)切分一次。為了區(qū)分各群組日志,使得日志輸出更加友好,F(xiàn)ISCO BCOS 2.0設(shè)計(jì)了通用日志格式。
通用日志格式如下:
log_level|time|[g:group_id][module_name]content
log_level : 日志級(jí)別,目前主要包括 trace , debug , info ,warning, error 和 fatal ,其中在發(fā)生極其嚴(yán)重錯(cuò)誤時(shí)會(huì)輸出fatal
time : 日志輸出時(shí)間,精確到納秒
group_id : 輸出日志記錄的群組ID
module_name :模塊關(guān)鍵字,例如同步模塊關(guān)鍵字為SYNC ,共識(shí)模塊關(guān)鍵字為CONSENSUS
content :日志記錄內(nèi)容
下面是群組3提交區(qū)塊時(shí)輸出的日志:
info|2019-06-2616:37:08.253147|[g:3][CONSENSUS][PBFT]^^^^^^^^Report,num=0,sealerIdx=0,hash=a4e10062...,next=1,tx=0,nodeIdx=2
該日志級(jí)別是info,輸出時(shí)間是 2019-06-26 ,群組id是3,模塊是 CONSENSUS ,日志關(guān)鍵字是 PBFT 和 Report 。
日志級(jí)別
日志分級(jí)對(duì)于及時(shí)定位問(wèn)題至關(guān)重要,F(xiàn)ISCO BCOS 2.0 對(duì)標(biāo)生產(chǎn)環(huán)境,將日志級(jí)別從低到高劃分為 trace、debug、info、 warning、error 和 fatal ,其中:
trace 和 debug 日志主要用于代碼調(diào)試
info 級(jí)別日志輸出了系統(tǒng)關(guān)鍵流程,主要用于生產(chǎn)環(huán)境定位問(wèn)題
warning 日志輸出了告警信息,當(dāng)告警日志記錄超過(guò)一定數(shù)目時(shí),運(yùn)維人員應(yīng)當(dāng)介入
error 日志輸出了核心錯(cuò)誤信息,系統(tǒng)出現(xiàn) error 日志時(shí),運(yùn)維人員應(yīng)當(dāng)介入
fatal 日志一般用于程序開發(fā)調(diào)試過(guò)程中,盡快定位bug,當(dāng)系統(tǒng)觸及不可能的邏輯時(shí),可以通過(guò)打印日志的形式終止程序,從而在開發(fā)階段暴露邏輯錯(cuò)誤
我們希望,在降低日志占用磁盤空間的同時(shí),能盡量暴露、定位系統(tǒng)問(wèn)題。為了達(dá)到這個(gè)目的,生產(chǎn)環(huán)境一般開啟info及其以上級(jí)別的日志,F(xiàn)ISCO BCOS建鏈工具生成的區(qū)塊鏈節(jié)點(diǎn)默認(rèn)日志級(jí)別是 info,會(huì)輸出 info、warning、error 以及fatal級(jí)別的日志。
若需要調(diào)整日志級(jí)別,可以修改節(jié)點(diǎn)目錄下的 config.ini 的 log.level 配置,如,將日志級(jí)別調(diào)整為 ≥debug ,配置如下:
[log]level=debug
模塊日志關(guān)鍵字
為了準(zhǔn)確區(qū)分多個(gè)模塊日志、方便定位bug和解析日志,F(xiàn)ISCO BCOS 2.0為每個(gè)模塊都定制了日志關(guān)鍵字,且設(shè)計(jì)了宏,方便開發(fā)者寫日志輸出代碼的同時(shí),保證日志輸出格式一致,提升代碼的可讀性。
主要的日志宏包括:
LOG_BADGE :輸出模塊信息,模塊信息外圍用中括號(hào) [] 括起來(lái),從而與其他日志輸出信息區(qū)分開
LOG_DESC : 輸出日志描述信息
LOG_KV :LOG_KV(_K, _V) 被定義為 "," << (_K) << "=" << (_V) ,主要用于輸出關(guān)鍵變量及其對(duì)應(yīng)的值
以 DEBUG 級(jí)別輸出區(qū)塊執(zhí)行信息的例子如下:
BLOCKVERIFIER_LOG(DEBUG)<< LOG_BADGE("executeBlock") << LOG_DESC("Init env takes") << LOG_KV("time(ms)",utcTime() - startTime) <<LOG_KV("txNum",block.transactions().size()) << LOG_KV("num",block.blockHeader().number());
各個(gè)模塊的日志關(guān)鍵字如下:
常用日志
網(wǎng)絡(luò)模塊、共識(shí)模塊是決定區(qū)塊鏈系統(tǒng)能否正常運(yùn)行的重要模塊,本節(jié)主要介紹這兩個(gè)模塊的常用日志。通過(guò)這些日志,大家可以判斷區(qū)塊鏈系統(tǒng)是否正常工作。
網(wǎng)絡(luò)模塊
查看網(wǎng)絡(luò)連接數(shù)目
可通過(guò)搜索關(guān)鍵字connected count 獲取指定節(jié)點(diǎn)的網(wǎng)絡(luò)連接情況,查看四節(jié)點(diǎn)區(qū)塊鏈系統(tǒng)中,某個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)連接情況,輸出日志如下:
$ tail -f log/* |grep "connected count"info|2019-06-2618:00:01.343480|[P2P][Service] heartBeat,connected count=3
其中 connected count 表示與當(dāng)前節(jié)點(diǎn)建立P2P網(wǎng)絡(luò)連接的節(jié)點(diǎn)數(shù)。
從上面日志可看出,該節(jié)點(diǎn)與三個(gè)其他節(jié)點(diǎn)建立了P2P網(wǎng)絡(luò)連接,符合預(yù)期。若節(jié)點(diǎn)連接不符合預(yù)期,則需要通過(guò)命令 netstat -anp| grep fisco-bcos 命令檢查節(jié)點(diǎn)連接情況,找出斷連節(jié)點(diǎn)。
證書驗(yàn)證失敗輸出日志
為了保障節(jié)點(diǎn)通信的機(jī)密性,F(xiàn)ISCOBCOS節(jié)點(diǎn)間通信采用了openssl握手協(xié)議,需要相互間進(jìn)行證書驗(yàn)證,在P2P 初始化過(guò)程中,若由于證書驗(yàn)證失敗導(dǎo)致節(jié)點(diǎn)間斷連,一般會(huì)輸出 Certverify failed 關(guān)鍵字的error日志:
$ tail -f log/* |grep "Cert verify failed"error|2019-06-2621:01:01.343989|[NETWORK][Host] Cert verify failed, wrong version number
節(jié)點(diǎn)輸出該錯(cuò)誤時(shí),一方面要確認(rèn)節(jié)點(diǎn)證書是否正確,另一方面需要確認(rèn)openssl版本是否升級(jí)到最新,ubuntu系統(tǒng)可使用 sudo apt install -y openssl 安裝最新的openssl;centos系統(tǒng)可使用 sudo yum -y install opensslopenssl-devel 升級(jí)到最新的openssl。
共識(shí)模塊
查看Leader打包區(qū)塊
FISCO BCOS 2.0共識(shí)節(jié)點(diǎn)輪流擔(dān)任leader打包區(qū)塊,成功打包區(qū)塊時(shí)會(huì)輸出 +++ 日志,可通過(guò)搜索群組id(記為group_id )以及 +++ 日志判斷指定群組是否正常共識(shí),若沒有輸出 ++ 日志,說(shuō)明節(jié)點(diǎn)已處于異常狀態(tài),請(qǐng)優(yōu)先檢查網(wǎng)絡(luò)連接是否正常、節(jié)點(diǎn)證書是否有效。
查看群組2的區(qū)塊打包情況,輸出日志如下:
$ tail -f log/*|grep "g:2.*++"info|2019-06-2618:00:02.551399|[g:2][CONSENSUS][SEALER]++++++++++++++++ Generating sealon,blkNum=1,tx=0,nodeIdx=3,hash=1f9c2b14...
日志中各字段的含義如下:
blkNum : 打包區(qū)塊的高度
tx : 打包區(qū)塊中包含的交易數(shù)
nodeIdx : 當(dāng)前共識(shí)節(jié)點(diǎn)的索引
hash : 打包區(qū)塊的哈希
從上面日志可以看出,群組2的當(dāng)前l(fā)eader是索引為3( nodeIdx=3 )的節(jié)點(diǎn),正在打包區(qū)塊高度為1( blkNum=1 )的空區(qū)塊( tx=0 ,空區(qū)塊不落盤)。
查看區(qū)塊落盤情況
非空區(qū)塊共識(shí)落盤成功或區(qū)塊同步落盤成功,均會(huì)輸出關(guān)鍵字為 Report 的日志,可通過(guò) `tail -f log/* | grep"${group_id}.*Report" 查看區(qū)塊落盤情況。
查看群組1區(qū)塊落盤日志輸出如下:
$ tail -f log/* |grep "g:1.*Report"info|2019-06-2618:00:07.802027|[g:1][CONSENSUS][PBFT]^^^^^^^^Report,num=716,sealerIdx=2,hash=dfd75e06...,next=717,tx=8,nodeIdx=3
其中,各個(gè)字段含義如下:
num : 落盤區(qū)塊塊高
sealerIdx : 打包該區(qū)塊的共識(shí)節(jié)點(diǎn)索引
hash : 落盤區(qū)塊哈希
next : 下一個(gè)區(qū)塊塊高
tx : 落盤區(qū)塊中包含的交易數(shù)
nodeIdx : 當(dāng)前共識(shí)節(jié)點(diǎn)索引
從上面日志可看出,群組1高度為716( num=716 )的區(qū)塊落盤成功,出塊節(jié)點(diǎn)是索引為2( sealerIdx=2)的共識(shí)節(jié) 點(diǎn),區(qū)塊哈希前8位為 dfd75e06 ,包含8筆( tx=8 )交易。
共識(shí)異常
網(wǎng)絡(luò)抖動(dòng)、網(wǎng)絡(luò)斷連或配置出錯(cuò)(如同一個(gè)群組的創(chuàng)世塊文件不一致)均有可能導(dǎo)致節(jié)點(diǎn)共識(shí)異常,PBFT共識(shí)節(jié)點(diǎn)會(huì)輸出 ViewChangeWarning 日志,可使用 tail -f log/*|grep "g:group_id.*ViewChangeWarning" 查看組group_id 是否共識(shí)異常。
組1共識(shí)異常輸出日志如下:
$ tail -f log/*|grep "g:1.*ViewChangeWarning"warning|2019-06-2618:00:06.154102|[g:1][CONSENSUS][PBFT]ViewChangeWarning: not caused by omitempty block ,v=5,toV=6,curNum=715,hash=ed6e856d...,nodeIdx=3,myNode=e39000ea...
各個(gè)字段的含義如下:
v: 當(dāng)前節(jié)點(diǎn)PBFT共識(shí)視圖
toV: 當(dāng)前節(jié)點(diǎn)試圖切換到的視圖
curNum: 節(jié)點(diǎn)最高塊高
hash: 節(jié)點(diǎn)最高塊哈希
nodeIdx: 當(dāng)前共識(shí)節(jié)點(diǎn)索引
myNode: 當(dāng)前節(jié)點(diǎn)Node ID
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。
網(wǎng)站題目:FISCOBCOS日志規(guī)范有哪些
轉(zhuǎn)載來(lái)源:http://jinyejixie.com/article32/ppspsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、靜態(tài)網(wǎng)站、Google、全網(wǎng)營(yíng)銷推廣、動(dòng)態(tài)網(wǎng)站、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)