中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

FISCO BCOS日志規范有哪些

發布時間:2021-08-03 11:02:39 來源:億速云 閱讀:286 作者:Leah 欄目:互聯網科技

FISCO BCOS日志規范有哪些,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

FISCO BCOS日志規范

 

為了使日志輸出更加友好,FISCO BCOS 2.0設計了通用的日志格式,并根據日志輸出信息的重要性對日志進行了分級。

此外,為了清晰地區分各模塊日志,FISCO BCOS 2.0為各模塊設計了日志關鍵字,并設計了各種宏來確保日志輸出格式一致、方便寫日志輸出代碼。

本節從日志格式、日志級別以及日志關鍵字三個方面介紹FISCO BCOS日志規范。

 

  通用日志格式

FISCO BCOS所有群組的日志均輸出到節點log目錄下的 log_%YYYY%mm%dd%HH.%MM 文件中,該日志文件每1個小時切分一次。為了區分各群組日志,使得日志輸出更加友好,FISCO BCOS 2.0設計了通用日志格式。

通用日志格式如下:

log_level|time|[g:group_id][module_name]content
  • log_level : 日志級別,目前主要包括 trace , debug , info ,warning, error 和 fatal ,其中在發生極其嚴重錯誤時會輸出fatal

  • time : 日志輸出時間,精確到納秒

     

  • group_id : 輸出日志記錄的群組ID

     

  • module_name :模塊關鍵字,例如同步模塊關鍵字為SYNC ,共識模塊關鍵字為CONSENSUS

     

  • content :日志記錄內容

下面是群組3提交區塊時輸出的日志:

info|2019-06-2616:37:08.253147|[g:3][CONSENSUS][PBFT]^^^^^^^^Report,num=0,sealerIdx=0,hash=a4e10062...,next=1,tx=0,nodeIdx=2

該日志級別是info,輸出時間是 2019-06-26 ,群組id是3,模塊是 CONSENSUS ,日志關鍵字是 PBFT 和 Report 。

  日志級別

日志分級對于及時定位問題至關重要,FISCO BCOS 2.0 對標生產環境,將日志級別從低到高劃分為 trace、debug、info、 warning、error 和 fatal ,其中:

  • trace 和 debug 日志主要用于代碼調試

     

  • info 級別日志輸出了系統關鍵流程,主要用于生產環境定位問題

     

  • warning 日志輸出了告警信息,當告警日志記錄超過一定數目時,運維人員應當介入

     

  • error 日志輸出了核心錯誤信息,系統出現 error 日志時,運維人員應當介入

     

  • fatal 日志一般用于程序開發調試過程中,盡快定位bug,當系統觸及不可能的邏輯時,可以通過打印日志的形式終止程序,從而在開發階段暴露邏輯錯誤

我們希望,在降低日志占用磁盤空間的同時,能盡量暴露、定位系統問題。為了達到這個目的,生產環境一般開啟info及其以上級別的日志,FISCO BCOS建鏈工具生成的區塊鏈節點默認日志級別是 info,會輸出 info、warning、error 以及fatal級別的日志。

若需要調整日志級別,可以修改節點目錄下的 config.ini 的 log.level 配置,如,將日志級別調整為 ≥debug ,配置如下:

[log]level=debug

  模塊日志關鍵字

 

為了準確區分多個模塊日志、方便定位bug和解析日志,FISCO BCOS 2.0為每個模塊都定制了日志關鍵字,且設計了宏,方便開發者寫日志輸出代碼的同時,保證日志輸出格式一致,提升代碼的可讀性。

主要的日志宏包括:

  • LOG_BADGE :輸出模塊信息,模塊信息外圍用中括號 [] 括起來,從而與其他日志輸出信息區分開

     

  • LOG_DESC : 輸出日志描述信息

     

  • LOG_KV :LOG_KV(_K, _V) 被定義為 "," << (_K) << "=" << (_V) ,主要用于輸出關鍵變量及其對應的值

以 DEBUG 級別輸出區塊執行信息的例子如下:

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());

各個模塊的日志關鍵字如下:

 

FISCO BCOS日志規范有哪些

常用日志

網絡模塊、共識模塊是決定區塊鏈系統能否正常運行的重要模塊,本節主要介紹這兩個模塊的常用日志。通過這些日志,大家可以判斷區塊鏈系統是否正常工作。

  網絡模塊

 

查看網絡連接數目

可通過搜索關鍵字connected count 獲取指定節點的網絡連接情況,查看四節點區塊鏈系統中,某個節點的網絡連接情況,輸出日志如下:

$ tail -f log/* |grep "connected count"info|2019-06-2618:00:01.343480|[P2P][Service] heartBeat,connected count=3

其中 connected count 表示與當前節點建立P2P網絡連接的節點數。

從上面日志可看出,該節點與三個其他節點建立了P2P網絡連接,符合預期。若節點連接不符合預期,則需要通過命令 netstat -anp| grep fisco-bcos 命令檢查節點連接情況,找出斷連節點。

證書驗證失敗輸出日志

為了保障節點通信的機密性,FISCOBCOS節點間通信采用了openssl握手協議,需要相互間進行證書驗證,在P2P 初始化過程中,若由于證書驗證失敗導致節點間斷連,一般會輸出 Certverify failed 關鍵字的error日志:

$ tail -f log/* |grep "Cert verify failed"error|2019-06-2621:01:01.343989|[NETWORK][Host] Cert verify failed, wrong version number

節點輸出該錯誤時,一方面要確認節點證書是否正確,另一方面需要確認openssl版本是否升級到最新,ubuntu系統可使用 sudo apt install -y openssl 安裝最新的openssl;centos系統可使用 sudo yum -y install opensslopenssl-devel 升級到最新的openssl。

  共識模塊

 

查看Leader打包區塊

 

FISCO BCOS 2.0共識節點輪流擔任leader打包區塊,成功打包區塊時會輸出 +++ 日志,可通過搜索群組id(記為group_id )以及 +++ 日志判斷指定群組是否正常共識,若沒有輸出 ++ 日志,說明節點已處于異常狀態,請優先檢查網絡連接是否正常、節點證書是否有效。

查看群組2的區塊打包情況,輸出日志如下:

$ 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 : 打包區塊的高度

  • tx : 打包區塊中包含的交易數

  • nodeIdx : 當前共識節點的索引

  • hash : 打包區塊的哈希

從上面日志可以看出,群組2的當前leader是索引為3( nodeIdx=3 )的節點,正在打包區塊高度為1( blkNum=1 )的空區塊( tx=0 ,空區塊不落盤)。

查看區塊落盤情況

 

非空區塊共識落盤成功或區塊同步落盤成功,均會輸出關鍵字為 Report 的日志,可通過 `tail -f log/* | grep"${group_id}.*Report" 查看區塊落盤情況。

查看群組1區塊落盤日志輸出如下:

$ 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

其中,各個字段含義如下:

  • num : 落盤區塊塊高

  • sealerIdx : 打包該區塊的共識節點索引

  • hash : 落盤區塊哈希

  • next : 下一個區塊塊高

  • tx : 落盤區塊中包含的交易數

  • nodeIdx : 當前共識節點索引

從上面日志可看出,群組1高度為716( num=716 )的區塊落盤成功,出塊節點是索引為2( sealerIdx=2)的共識節 點,區塊哈希前8位為 dfd75e06 ,包含8筆( tx=8 )交易。

共識異常

 

網絡抖動、網絡斷連或配置出錯(如同一個群組的創世塊文件不一致)均有可能導致節點共識異常,PBFT共識節點會輸出 ViewChangeWarning 日志,可使用 tail -f log/*|grep "g:group_id.*ViewChangeWarning" 查看組group_id 是否共識異常。

組1共識異常輸出日志如下:

$ 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...

各個字段的含義如下:

  • v: 當前節點PBFT共識視圖

  • toV: 當前節點試圖切換到的視圖

  • curNum: 節點最高塊高

  • hash: 節點最高塊哈希

  • nodeIdx: 當前共識節點索引

  • myNode: 當前節點Node ID

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

林口县| 阿拉善左旗| 淄博市| 桦南县| 田林县| 澄江县| 永丰县| 衡南县| 高邑县| 腾冲县| 桦南县| 崇州市| 丹凤县| 宁远县| 昌邑市| 常德市| 广宗县| 南召县| 南投县| 伊宁县| 卢湾区| 揭阳市| 贵港市| 湾仔区| 高台县| 子洲县| 修武县| 永顺县| 荆州市| 海南省| 大冶市| 常山县| 邵东县| 鹰潭市| 武邑县| 石河子市| 柳州市| 望都县| 灌云县| 府谷县| 叙永县|