国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

如何打日志才能方便排查問題?

共 11500字,需瀏覽 23分鐘

 ·

2021-05-20 03:27

程序員的成長(zhǎng)之路
互聯(lián)網(wǎng)/程序員/技術(shù)/資料共享 
關(guān)注


閱讀本文大概需要 14 分鐘。

作者:琴水玉
來源:https://cnblogs.com/lovesqcc/p/4319594.html

在程序中打錯(cuò)誤日志的主要目標(biāo)是為更好地排查問題和解決問題提供重要線索和指導(dǎo)。但是在實(shí)際中打的錯(cuò)誤日志內(nèi)容和格式變化多樣,錯(cuò)誤提示上可能殘缺不全、沒有相關(guān)背景、不明其義,使得排查解決問題成為非常不方便或者耗時(shí)的操作。而實(shí)際上,如果編程的時(shí)候稍加用心,就會(huì)減少排查問題的很多無用功。

在闡述如何編寫有效的錯(cuò)誤日志之前,了解錯(cuò)誤是怎么產(chǎn)生的,非常重要。

錯(cuò)誤是如何煉成的

對(duì)于當(dāng)前系統(tǒng)來說, 錯(cuò)誤的產(chǎn)生由三個(gè)地方引入:

1.上層系統(tǒng)引入的非法參數(shù)。對(duì)于非法參數(shù)引入的錯(cuò)誤, 可以通過參數(shù)校驗(yàn)和前置條件校驗(yàn)來截獲錯(cuò)誤;

2.與下層系統(tǒng)交互產(chǎn)生的錯(cuò)誤。與下層交互產(chǎn)生的錯(cuò)誤, 有兩種:

a.下層系統(tǒng)處理成功了,但是通信出錯(cuò)了, 這樣會(huì)導(dǎo)致子系統(tǒng)之間的數(shù)據(jù)不一致;

對(duì)于這種情況, 可以采用超時(shí)補(bǔ)償機(jī)制,預(yù)先將任務(wù)記錄下來,通過定時(shí)任務(wù)在后續(xù)將數(shù)據(jù)訂正過來。

更好的設(shè)計(jì)方案 ?

b.通信成功了,但是下層處理出錯(cuò)了。

對(duì)于這種情況, 需要與下層開發(fā)人員溝通, 協(xié)調(diào)子系統(tǒng)之間的交互;

需要根據(jù)下層返回的錯(cuò)誤碼和錯(cuò)誤描述做適當(dāng)?shù)奶幚砘蚪o予合理的提示信息。

無論哪一種情況, 都要假設(shè)下層系統(tǒng)可靠性一般, 做好出錯(cuò)的設(shè)計(jì)考慮。

3.本層系統(tǒng)處理出錯(cuò)。

本層系統(tǒng)產(chǎn)生錯(cuò)誤的原因:

原因一:疏忽導(dǎo)致。

疏忽是指程序員能力完全可避免此類錯(cuò)誤但實(shí)際上沒做到。比如將 && 敲成了 & , == 敲成了 = ;邊界錯(cuò)誤, 復(fù)合邏輯判斷錯(cuò)誤等。疏忽要么是程序員注意力不夠集中, 比如處于疲倦狀態(tài)、加班通宵、邊開會(huì)邊寫程序;要么是急著實(shí)現(xiàn)功能,沒有顧及程序的健壯性等。
改進(jìn)措施:使用代碼靜態(tài)分析工具,通過單元測(cè)試行覆蓋可有效避免此類問題。
原因二:錯(cuò)誤與異常處理不夠周全導(dǎo)致的。
比如輸入問題。計(jì)算兩個(gè)數(shù)相加, 不僅要考慮計(jì)算溢出問題, 還要考慮輸入非法的情形。對(duì)于前者,可能通過了解、犯錯(cuò)或經(jīng)驗(yàn)就可以避免, 而對(duì)于后者,則必須加以限定,以使之處于我們的智商能夠控制的范圍內(nèi),比如使用正則表達(dá)式過濾掉不合法的輸入。對(duì)于正則表達(dá)式必須進(jìn)行測(cè)試。對(duì)于不合法輸入, 要給出盡可能詳細(xì)、易懂、友好的提示信息、原因及建議方案。
改進(jìn)措施:盡可能周全地考慮各種錯(cuò)誤情形和異常處理。在實(shí)現(xiàn)主流程之后,增加一個(gè)步驟:仔細(xì)推敲可能的各種錯(cuò)誤和異常,返回合理錯(cuò)誤碼和錯(cuò)誤描述。每個(gè)接口或模塊都有效處理好自己的錯(cuò)誤和異常,可有效避免因場(chǎng)景交互復(fù)雜導(dǎo)致的bug。
譬如,一個(gè)業(yè)務(wù)用例由場(chǎng)景A.B.C交互完成。實(shí)際執(zhí)行A.B成功了,C失敗了,這時(shí)B需要根據(jù)C返回合理的代碼和消息進(jìn)行回滾并返回給A合理的代碼和消息,A根據(jù)B的返回進(jìn)行回滾,并返回給客戶端合理的代碼和消息。這是一種分段回滾的機(jī)制,要求每個(gè)場(chǎng)景都必須考慮異常情況下的回滾。
原因三:邏輯耦合緊密導(dǎo)致。
由于業(yè)務(wù)邏輯耦合緊密, 隨著軟件產(chǎn)品一步步發(fā)展, 各種邏輯關(guān)系錯(cuò)綜復(fù)雜, 難以看到全局狀況, 導(dǎo)致局部修改影響波及到全局范圍,造成不可預(yù)知的問題。
改進(jìn)措施:編寫短函數(shù)和短方法, 每個(gè)函數(shù)或方法最好不超過 50 行。編寫無狀態(tài)函數(shù)和方法, 只讀全局狀態(tài), 相同的前提條件總是會(huì)輸出相同的結(jié)果, 不會(huì)依賴外部狀態(tài)而變更自己的行為;定義合理的結(jié)構(gòu)、 接口和邏輯段,使接口之間的交互盡可能正交、低耦合;對(duì)于服務(wù)層, 盡可能提供簡(jiǎn)單、正交的接口;持續(xù)重構(gòu), 保持應(yīng)用模塊化和松耦合, 理清邏輯依賴關(guān)系。對(duì)于有大量業(yè)務(wù)接口相互影響的情況, 必須整理各個(gè)業(yè)務(wù)接口的邏輯流程及相互依賴關(guān)系, 從整體上進(jìn)行優(yōu)化;對(duì)于有大量狀態(tài)的實(shí)體, 也需要梳理相關(guān)的業(yè)務(wù)接口, 整理狀態(tài)之間的轉(zhuǎn)換關(guān)系。
原因四:算法不正確導(dǎo)致。
改進(jìn)措施:首先將算法從應(yīng)用中分離出來。若算法有多種實(shí)現(xiàn), 可以通過交叉校驗(yàn)的單元測(cè)試找出來, 比如排序操作;如果算法具有可逆性質(zhì), 可以通過可逆校驗(yàn)的單元測(cè)試找出來, 比如加密解密操作。
原因五:相同類型的參數(shù),傳入順序錯(cuò)誤導(dǎo)致。
比如,modifyFlow(int rx, int tx), 實(shí)際調(diào)用為 modifyFlow(tx,rx)
改進(jìn)措施:盡可能使類型具體化, 該用浮點(diǎn)數(shù)就用浮點(diǎn)數(shù), 該用字符串就用字符串, 該用具體對(duì)象類型就用具體對(duì)象類型;相同類型的參數(shù)盡可能錯(cuò)開;如果上述都無法滿足, 就必須通過接口測(cè)試來驗(yàn)證, 接口參數(shù)值務(wù)必是不同的。
原因六:空指針異常。
空指針異常通常是對(duì)象沒有正確初始化, 或者使用對(duì)象之前沒有對(duì)對(duì)象是否非空做檢測(cè)。
改進(jìn)措施:對(duì)于配置對(duì)象, 檢測(cè)其是否成功初始化;對(duì)于普通對(duì)象, 獲取到實(shí)體對(duì)象使用之前, 檢測(cè)是否非空。
原因七:網(wǎng)絡(luò)通信錯(cuò)誤。
網(wǎng)絡(luò)通信錯(cuò)誤通常是因?yàn)榫W(wǎng)絡(luò)延遲、阻塞或不通導(dǎo)致的錯(cuò)誤。網(wǎng)絡(luò)通信錯(cuò)誤通常是小概率事件, 但小概率事件很可能會(huì)導(dǎo)致大面積的故障、 難以復(fù)現(xiàn)的BUG。
改進(jìn)措施:在前一個(gè)子系統(tǒng)的結(jié)束點(diǎn)和后一個(gè)子系統(tǒng)的入口點(diǎn)分別打 INFO 日志。通過兩者的時(shí)間差提供一點(diǎn)線索。
原因八:事務(wù)與并發(fā)錯(cuò)誤。
事務(wù)與并發(fā)結(jié)合在一起, 很容易產(chǎn)生非常難以定位的錯(cuò)誤。
改進(jìn)措施:對(duì)于程序中的并發(fā)操作, 涉及到共享變量及重要狀態(tài)修改的, 要加 INFO 日志。
原因九:配置錯(cuò)誤。
改進(jìn)措施:在啟動(dòng)應(yīng)用或啟動(dòng)相應(yīng)配置時(shí), 檢測(cè)所有的配置項(xiàng), 打印相應(yīng)的INFO日志, 確保所有配置都加載成功。
原因十:業(yè)務(wù)不熟悉導(dǎo)致的錯(cuò)誤。
在中大型系統(tǒng), 部分業(yè)務(wù)邏輯和業(yè)務(wù)交互都比較復(fù)雜, 整個(gè)的業(yè)務(wù)邏輯可能存在于多個(gè)開發(fā)同學(xué)的大腦里, 每個(gè)人的認(rèn)識(shí)都不是完整的。這很容易導(dǎo)致業(yè)務(wù)編碼錯(cuò)誤。
改進(jìn)措施:通過多人討論和溝通, 設(shè)計(jì)正確的業(yè)務(wù)用例, 根據(jù)業(yè)務(wù)用例來編寫和實(shí)現(xiàn)業(yè)務(wù)邏輯;最終的業(yè)務(wù)邏輯和業(yè)務(wù)用例必須完整存檔;在業(yè)務(wù)接口中注明該業(yè)務(wù)的前置條件、處理邏輯、后置校驗(yàn)和注意事項(xiàng);當(dāng)業(yè)務(wù)變化時(shí), 需要同步更新業(yè)務(wù)注釋;代碼REVIEW。業(yè)務(wù)注釋是業(yè)務(wù)接口的重要文檔, 對(duì)業(yè)務(wù)理解起著重要的緩存作用。
原因十一:設(shè)計(jì)問題導(dǎo)致的錯(cuò)誤。
比如同步串行方式會(huì)有性能、響應(yīng)慢的問題, 而并發(fā)異步方式可以解決性能、響應(yīng)慢的問題, 但會(huì)帶來安全、正確性的隱患。異步方式會(huì)導(dǎo)致編程模型的改變, 新增異步消息推送和接收等新的問題。使用緩存能夠提高性能, 但是又會(huì)存在緩存更新的問題。
改進(jìn)措施:編寫和仔細(xì)評(píng)審設(shè)計(jì)文檔。設(shè)計(jì)文檔必須闡述背景、需求、所滿足的業(yè)務(wù)目標(biāo)、要達(dá)到的業(yè)務(wù)性能指標(biāo)、可能的影響、設(shè)計(jì)總體思路、詳細(xì)方案、預(yù)見該方案的優(yōu)缺點(diǎn)及可能的影響;通過測(cè)試和驗(yàn)收, 確保改設(shè)計(jì)方案確實(shí)滿足業(yè)務(wù)目標(biāo)和業(yè)務(wù)性能指標(biāo)。
原因十二:未知細(xì)節(jié)問題導(dǎo)致的錯(cuò)誤。
比如緩沖區(qū)溢出、 SQL 注入攻擊。從功能上看是沒有問題的, 但是從惡意使用上看, 是存在漏洞的。再比如, 選擇 jackson 庫(kù)做 JSON 字符串解析, 默認(rèn)情況下, 當(dāng)對(duì)象新增字段時(shí)會(huì)導(dǎo)致解析出錯(cuò)。必須在對(duì)象上加 @JsonIgnoreProperties(ignoreUnknown = true) 注解才能正確應(yīng)對(duì)變化。如果選用其他 JSON 庫(kù)就不一定有這個(gè)問題。
改進(jìn)措施:一方面要通過經(jīng)驗(yàn)積累, 另一方面, 考慮安全問題和例外情況, 選擇成熟的經(jīng)過嚴(yán)格測(cè)試的庫(kù)。
原因十三:隨時(shí)間變化而出現(xiàn)的bug。
有些解決方案在過去看來是很不錯(cuò)的,但在當(dāng)前或者未來的情景中可能變得笨拙甚至不中用,也是常見的事情。比如像加密解密算法, 在過去可能認(rèn)為是完善的, 在破解之后就要慎重使用了。
改進(jìn)措施:關(guān)注變化以及漏洞修復(fù)消息,及時(shí)修正過時(shí)的代碼、庫(kù)、行為。
原因十四:硬件相關(guān)的錯(cuò)誤。
比如內(nèi)存泄露, 存儲(chǔ)空間不足, OutOfMemoryError 等。
改進(jìn)措施:增加對(duì)應(yīng)用系統(tǒng)的 CPU / 內(nèi)存 / 網(wǎng)絡(luò)等重要指標(biāo)的性能監(jiān)控。
系統(tǒng)出現(xiàn)的常見錯(cuò)誤:
1.實(shí)體在數(shù)據(jù)庫(kù)中的記錄不存在, 必須指明是哪個(gè)實(shí)體或?qū)嶓w標(biāo)識(shí);
2.實(shí)體配置不正確, 必須指明是哪個(gè)配置有問題,正確的配置應(yīng)該是什么;
3.實(shí)體資源不滿足條件, 必須指明當(dāng)前資源是什么,資源要求是什么;
4.實(shí)體操作前置條件不滿足, 必須指明需要滿足什么前置條件,當(dāng)前的狀態(tài)是什么;
5.實(shí)體操作后置校驗(yàn)不滿足, 必須指明需要滿足什么后置校驗(yàn), 當(dāng)前的狀態(tài)是什么;
6.性能問題導(dǎo)致超時(shí), 必須指明是什么導(dǎo)致的性能問題,后續(xù)如何優(yōu)化;
7.多個(gè)子系統(tǒng)交互通信出錯(cuò)導(dǎo)致之間的狀態(tài)或數(shù)據(jù)不一致?
一般難以定位的錯(cuò)誤會(huì)出現(xiàn)在比較底層的地方。因?yàn)榈讓訜o法預(yù)知具體的業(yè)務(wù)場(chǎng)景, 給出的錯(cuò)誤消息都是比較通用的。
這就要求在業(yè)務(wù)上層提供盡可能豐富的線索。錯(cuò)誤的產(chǎn)生一定是多個(gè)系統(tǒng)或?qū)哟谓换サ倪^程中在某一層棧上不滿足前置條件導(dǎo)致。在編程時(shí), 在每一層棧中盡可能確保所有必須的前置條件滿足,盡可能避免錯(cuò)誤的參數(shù)傳遞到底層, 盡可能地將錯(cuò)誤截獲在業(yè)務(wù)層。
大多數(shù)錯(cuò)誤都是由多種原因組合產(chǎn)生。但每一種錯(cuò)誤必定有其原因。在解決錯(cuò)誤之后, 要深入分析錯(cuò)誤是如何發(fā)生的, 如何避免這些錯(cuò)誤再次發(fā)生。努力就能成功, 但是:反思才能進(jìn)步 !
如何編寫更容易排查問題的錯(cuò)誤日志
打錯(cuò)誤日志的基本原則:
1.盡可能完整。每一條錯(cuò)誤日志都完整描述了:什么場(chǎng)景下發(fā)生了什么錯(cuò)誤, 什么原因(或者哪些可能原因), 如何解決(或解決提示);
2.盡可能具體。比如 NC 資源不足, 究竟具體指什么資源不足, 是否可以通過程序直接指明;通用錯(cuò)誤,比如 VM NOT EXIST , 要指明在什么場(chǎng)景下發(fā)生的,可能便于后續(xù)統(tǒng)計(jì)的工作。
3.盡可能直接。最理想的錯(cuò)誤日志應(yīng)該讓人在第一直覺下能夠知道是什么原因?qū)е?,該怎么去解決,而不是還要通過若干步驟去查找真正的原因。
4.將已有經(jīng)驗(yàn)集成直接到系統(tǒng)中。所有已經(jīng)解決過的問題及經(jīng)驗(yàn)都要盡可能以友好的方式集成到系統(tǒng)中,給新進(jìn)人員更好的提示,而不是埋藏在其他地方。
5.排版要整潔有序, 格式統(tǒng)一化規(guī)范化。密密麻麻、隨筆式的日志看著就揪心, 相當(dāng)不友好, 也不便于排查問題。
6.采用多個(gè)關(guān)鍵字唯一標(biāo)識(shí)請(qǐng)求,突出顯示關(guān)鍵字:時(shí)間、實(shí)體標(biāo)識(shí)(比如vmname)、操作名稱。
排查問題的基本步驟:
登錄到應(yīng)用服務(wù)器 -> 打開日志文件 -> 定位到錯(cuò)誤日志位置 -> 根據(jù)錯(cuò)誤日志的線索的指導(dǎo)去排查、確認(rèn)問題和解決問題。
其中:
1.從登陸到打開日志文件:由于應(yīng)用服務(wù)器有多臺(tái), 要逐一登錄上去查看實(shí)在不方便。需要編寫一個(gè)工具放在 AG 上直接在 AG 上查看所有服務(wù)器日志, 甚至直接篩選出所需要的錯(cuò)誤日志。
2.定位錯(cuò)誤日志位置。目前日志的排版密密麻麻,不易定位到錯(cuò)誤日志。一般可以先采用"時(shí)間"來定位到錯(cuò)誤日志的附近前面的地方, 然后使用 實(shí)體關(guān)鍵字 / 操作名稱 組合來鎖定錯(cuò)誤日志地方。根據(jù) requestId 定位錯(cuò)誤日志雖然比較符合傳統(tǒng),但是要先找到 requestId , 并且不具有描述性。最好能直接根據(jù)時(shí)間/內(nèi)容關(guān)鍵字來定位錯(cuò)誤日志位置。
3.分析錯(cuò)誤日志。錯(cuò)誤日志的內(nèi)容最好能夠更加直接明了, 能夠明確指明與當(dāng)前要排查的問題特征是吻合的, 并且給出重要線索。
通常, 程序錯(cuò)誤日志的問題就是日志內(nèi)容是針對(duì)當(dāng)前代碼情境才能理解,看上去簡(jiǎn)潔, 但總是寫的不全, 半英文格式;一旦離開代碼情境, 就很難知道究竟說的是什么, 非要讓人思考一下或者去看看代碼才能明白日志說的是什么含義。這不是自己給自己罪受?
比如:
if ((storageType == StorageType.dfs1 || storageType == StorageType.dfs2)
                && (zone.hasStorageType(StorageType.io3) || zone.hasStorageType(StorageType.io4))) {
// 進(jìn)入dfs1 和dfs2 在io3 io4 存儲(chǔ)。
else {
      log.info("zone storage type not support, zone: " + zone.getZoneId() + ", storageType: "
+ storageType.name());
      throw new BizException(DeviceErrorCode.ZONE_STORAGE_TYPE_NOT_SUPPORT);
}
zone 要支持什么 storage type 才是正確的? Do Not Let Me Think !
錯(cuò)誤日志應(yīng)該做到:即使離開代碼情境,也能清晰地描述發(fā)生了什么。
此外,如果能夠直接在錯(cuò)誤日志中說明清楚原因, 在做巡檢日志的時(shí)候也可以省些力氣。
從某種意義上來說, 錯(cuò)誤日志也可以是一種非常有益的文檔,記錄著各種不合法的運(yùn)行用例。
目前程序錯(cuò)誤日志的內(nèi)容可能存在如下問題:
1. 錯(cuò)誤日志沒有指明錯(cuò)誤參數(shù)和內(nèi)容:

catch(Exception ex){
      log.error("control ip insert failed", ex);
      return new ResultSet<AddControlIpResponse>(
ControlIpErrorCode.ERROR_CONTROL_IP_INSERT_FAILURE);
}

沒有指明插入失敗的 control ip. 如果加上 control ip 關(guān)鍵字, 更容易搜索和鎖定錯(cuò)誤。
類似的還有:

log.error("Get some errors when insert subnet and its IPs into database. Add subnet or IP failure.", e);

沒有指明是哪個(gè) subnet 的它下屬的哪些 IP. 值得注意的是, 要指明這些要額外做一些事情, 可能會(huì)稍微影響性能。這時(shí)候需要權(quán)衡性能和可調(diào)試性。
解決方案:使用 String.format("Some msg to ErrorObj: %s", errobj) 方法指明錯(cuò)誤參數(shù)及內(nèi)容。
這通常要求對(duì) DO 對(duì)象編寫可讀的 toString 方法。
2. 錯(cuò)誤場(chǎng)景不明確:
log.error("nc has exist, nc ip" + request.getIp());
在 createNc 中檢測(cè)到 NC 已經(jīng)存在報(bào)錯(cuò)。但是日志上沒有指明錯(cuò)誤場(chǎng)景, 讓人猜測(cè),為什么會(huì)報(bào)NC已存在錯(cuò)誤。
可以改為

log.error("nc has exist when want to create nc, please check nc parameters. Given nc ip: " + request.getIp());

log.error("[create nc] nc has exist, please check nc parameters. Given nc ip: " + request.getIp());

類似的還有:

log.error("not all vm destroyed, nc id " + request.getNcId());

改成

log.error("[delete nc] some vms [%s] in the nc are not destroyed. nc id: %s", vmNames, request.getNcId());

解決方案:錯(cuò)誤消息加上 when 字句, 或者錯(cuò)誤消息前加上 【接口名】, 指明錯(cuò)誤場(chǎng)景,直接從錯(cuò)誤日志就知道明白了。
一般能夠知道 executor 的可以加上 【接口名】, service 加上 when 字句。
3. 內(nèi)容不明確, 或不明其義:

if(aliMonitorReporter == null) {
        log.error("aliMonitorReporter is null!");
else {
       aliMonitorReporter.attach(new ThreadPoolMonitor(namePrefix, asynTaskThreadPool.getThreadPoolExecutor()));
}

改為:

log.error("aliMonitorReporter is null, probably not initialized properly, please check configuration in file xxx.");

類似的還有:

if (diskWbps == null && diskRbps == null && diskWiops == null    && diskRiops == null) {
      log.error("none of attribute is specified for modifying");
      throw new BizException(DeviceErrorCode.NO_ATTRIBUTE_FOR_MODIFY);
}

改為

log.error("[modify disk attribute] None of [diskWbps,diskRbps,diskWiops,diskRiops] is specified for disk id:" + diskId);

解決方案:更清晰貼切地描述錯(cuò)誤內(nèi)容。
4. 排查問題的引導(dǎo)內(nèi)容不明確:

log.error("get gw group ip segment failed. zkPath: " + LockResource.getGwGroupIpSegmnetLockPath(request.getGwGroupId()));

zkPath ? 如何去排查這個(gè)問題?我該去找誰(shuí)?到哪里去查找更具體的線索?
解決方案:加上相應(yīng)的背景知識(shí)和引導(dǎo)排查措施。
5. 錯(cuò)誤內(nèi)容不夠具體細(xì)致:

if (!ncResourceService.isNcResourceEnough(ncResourceDO,    vmResourceCondition)) {
      log.error("disk space is not enough at vm's nc, nc id:" + vmDO.getNcId());
      throw new BizException(ResourceErrorCode.ERROR_RESOURCE_NOT_ENOUGH);
}

究竟是什么資源不夠?目前剩余多少?現(xiàn)在需要多少?值得注意的是, 要指明這些要額外做一些事情, 可能會(huì)稍微影響性能。這時(shí)候需要權(quán)衡性能和可調(diào)試性。
解決方案:通過改進(jìn)程序或程序技巧, 盡可能揭示出具體的差異所在, 減少人工比對(duì)的操作。
6. 半英文句式讀起來不夠清晰明白,需要思考來拼湊起完整的意思:

log.warn("cache status conflict, device id "+deviceDO.getId()+" db status "+deviceDO.getStatus() +", nc status "+ status);

改為:

log.warn(String.format("[query cache status] device cache status conflicts between regiondb and nc, status of device '%s' in regiondb is %s , but is %s in nc.", deviceDO.getId(), deviceDO.getStatus(), status));

解決方案:改為自然可讀的英文句式。
總結(jié)起來, 錯(cuò)誤日志格式可以為:

log.error("[接口名或操作名] [Some Error Msg] happens. [params] [Probably Because]. [Probably need to do].");

log.error(String.format("[接口名或操作名] [Some Error Msg] happens. [%s]. [Probably Because]. [Probably need to do].", params));

log.error("[Some Error Msg] happens to 錯(cuò)誤參數(shù)或內(nèi)容 when [in some condition]. [Probably Because]. [Probably need to do].");

log.error(String.format("[Some Error Msg] happens to %s when [in some condition]. [Probably Because]. [Probably need to do].", parameters));

[Probably Reason]. [Probably need to do]. 在某些情況下可以省略;在一些重要接口和場(chǎng)景下最好能說明一下。
每一條錯(cuò)誤日志都是獨(dú)立的,盡可能完整、具體、直接說明何種場(chǎng)景下發(fā)生了什么錯(cuò)誤,由什么原因?qū)е?,要采用什么措施或步驟。
Java 系列最新教程:https://github.com/javastacks/javastack
問題:
1.String.format 的性能會(huì)影響打日志嗎?一般來說, 錯(cuò)誤日志應(yīng)該是比較少的, 使用 String.format 的頻度并不會(huì)太高,不會(huì)對(duì)應(yīng)用和日志造成影響。
2.開發(fā)時(shí)間非常緊張時(shí), 有時(shí)間去斟酌字句嗎?建立一個(gè)標(biāo)準(zhǔn)化的內(nèi)容格式,將內(nèi)容往格式套,可以節(jié)省斟酌字句的時(shí)間。
3.什么時(shí)候使用 info, warn , error ?
info 用于打印程序應(yīng)該出現(xiàn)的正常狀態(tài)信息, 便于追蹤定位;
warn 表明系統(tǒng)出現(xiàn)輕微的不合理但不影響運(yùn)行和使用;
error 表明出現(xiàn)了系統(tǒng)錯(cuò)誤和異常,無法正常完成目標(biāo)操作。
http://stackoverflow.com/questions/2031163/when-to-use-log-level-warn-vs-error
錯(cuò)誤日志是排查問題的重要手段之一。當(dāng)我們編程實(shí)現(xiàn)一項(xiàng)功能時(shí), 通常會(huì)考慮可能發(fā)生的各種錯(cuò)誤及相應(yīng)原因:
要排查出相應(yīng)的原因, 就需要一些關(guān)鍵描述來定位原因。這就會(huì)形成三元組:
錯(cuò)誤現(xiàn)象 -> 錯(cuò)誤關(guān)鍵描述 -> 最終的錯(cuò)誤原因。
需要針對(duì)每一種錯(cuò)誤盡可能提供相應(yīng)的錯(cuò)誤關(guān)鍵描述,從而定位到相應(yīng)的錯(cuò)誤原因。
也就是說,編程的時(shí)候,要仔細(xì)思考, 哪些描述是非常有利于定位錯(cuò)誤原因的, 盡可能將這些描述添加到錯(cuò)誤日志中。
文中沒有指出的問題或困難, 請(qǐng)?zhí)岢瞿愕慕ㄗh。
<END>

推薦閱讀:

字節(jié)跳動(dòng)涉代碼抄襲被訴陪22.74億,連錯(cuò)誤的函數(shù)都搬?

程序員必須清楚的 10 個(gè)高級(jí) SQL 概念!

最近面試BAT,整理一份面試資料《Java面試BATJ通關(guān)手冊(cè)》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等等。

獲取方式:點(diǎn)個(gè)「在看」,點(diǎn)擊上方小卡片,進(jìn)入公眾號(hào)后回復(fù)「面試題」領(lǐng)取,更多內(nèi)容陸續(xù)奉上。

朕已閱 

瀏覽 14
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 亚洲A片视频| 欧美在线一级片| 亚洲色在线视频| 午夜国产码网站码| 成人看片黄a免费看视频| 国产老骚逼| 免费aaa| 大乳奶一级婬片A片| 成人自拍视频在线观看| 国产在线精品观看| 先锋成人av| 手机无码在线播放| 91麻豆福利在线| 久操国产| 亚洲精品娱乐| 波多野结衣一级婬片A片免费下载| 一级片国产| 爆乳一区二区三区AV| 一级女婬片A片AAAA片| 国产精品911| 俺也来www俺也色com| 大香蕉电影网站| 亚洲综合p| 99热国产在线| 日韩免费网站| 久久久久久久久久8888| 嫩草91| 日日摸日日添日日躁AV| 成人激情片| www.欧美日韩| 成人欧美| 成人网站毛片| 在线免费观看无码视频| www,色婷婷| 在线观看黄色小电影| 无码AV高清| 97国产| 成人在线视频播放| 蜜臀AV成人精品| 欧美激情视频一区二区| 日韩免费成人视频| 中文字幕一二三四| 西西西444www无码视频| 欧美成人在线观看| 午夜18视频在线观看| 日韩人妻视频| 69成人免费视频| a欧美| 成人做爰黄片视频免费| 免费看国产黄色| 欧美九九九九| 后入少妇视频| 欧美色成人免费在线视频| 天天干天天操| 欧美自拍视频在线观看| 人人干人人干人人| 蜜桃Av噜噜一区二区三| 超碰成人97| 秋霞福利影院| 日韩无码你懂的| 国产免费黄色视频网站| 97资源网站| 天堂AV色| 日AV在线无| 9999久久久久| 激情在线视频| 欧美综合国产| 人人插人人干| 国产内射无码| 久操视频在线观看免费| 91热久久| 久久黄色视频免费观看| 日韩欧美精品在线| 黄频视频| 男女福利视频| 操屄视频免费观看| 免看一级a一片| 黄色视频免费在线看| 精产国品一区二区| 正在播放李彩斐被洋老外| 免费黄色在线| 国产成人视频在线| 国产精品1| 无码视频网| 美女肏逼| 亚洲无码大全| 成年人视频在线免费观看| 山西真实国产乱子伦| 四川BBB嫩BBBB爽BBBB| 亚洲午夜无码久久久| 99热这里只有精品999| 性欧美日韩| 青草成人在线| 99久久99久久99久久久99国产 | а√在线中文网新版地址在线| 黄工厂精品视频在线播| 99在线观看| 网址你懂的| 日韩在线视频免费观看| 99视频免费| 在线一区二区三区四区| 欧美成人精品一区二区三区| 翔田千里一区二区| 四虎成人视频| 88AV在线| 91成人一区二区三区| 亚洲av高清无码| 水蜜桃91| 一本道在线无码| 麻豆国产一区二区三区四区| 七十路の高齡熟妇无码| 国产精品视频久久久| 蜜桃av在线| 亚洲成人综合在线| 五月在线| 日韩高清无码电影| 久久久久久久性爱| 中文字幕人妻日韩在线| 国产一区免费| 黄片一区二区| 午夜无码电影| 免费黄色在线| 国产色婷婷| 日韩一级视频| 色天使青青草| 欧美日韩一区二区三区在线电影| 欧美视频在线免费| 国产精品探花熟女AV| 国产欧美在线观看不卡| 大香蕉久久久久久久| 天堂网影音先锋| 久久成人久久爱| 99色热视频| 少妇厨房愉情理伦BD在线观| 91妻人人澡人人爽人人精品| 久操资源站| 九九小视频| 激情婷婷综合| 影音先锋av资源在线| 亚洲AV偷拍| 黑人大荫蒂女同互磨| 永久免费看片视频| 国内成人精品| 日韩黄色小说| 国产欧美日韩在线| 久久久大香蕉| 短发半推半就AV| 人妻无码一区二区三区免费| 久草大香蕉在线视频| 色哟哟一区| 欧美黄色一级网站| 国内精品久久久久久久久98| 日韩成人无码免费视频| 在线无码中文| 操少妇视频| 国产免费成人视频| 国产精品9| 亚洲日韩在线视频| 亚洲av成人网| 五月亭亭在线视频| 一区二区三区福利| 国产乱伦AV网站| 学生妹毛片视频| 日本九九视频| 大香蕉尹在线| 在线免费看av| 日韩性爱网站| 国产精品久久久无码专区| 久草大香蕉在线视频| 欧美操穴| 亚洲人成电影网| 亚洲网站在线播放| 亚洲无码人妻| 伊人激情五月天| 久草小视频| 国产一级在线观看| 国产麻豆电影在线观看| 四川少妇bbbb| 日韩无码1| 日韩无码免费电影| 大地99中文在线观看| 国产精品操| 夜夜草视频| 亚洲无码高清在线观看| 婷婷开心色四房播播在线| 日本在线www| 毛片小电影| 人妻少妇精品| 欧美无人区码suv| 性做久久久久久| 学生妹一级大片| 性无码区| 欧美成人毛片一级A片| 国产成人无码在线| 黄色亚洲| 四虎最新视频| 亚洲欧洲视频在线观看| 欧美激情国产精品| 人人鲁人人操| 黄色小视频在线免费观看| 婷婷五月天激情小说| 就要操| 日韩在线观看视频免费| 国产黄片在线视频| 久操婷婷| 国产精品丝袜| 91吴梦梦一区二区传媒| 人人操碰| 国产精品内射| 国产淫乱视频| 午夜丁香婷婷| 亚洲精品成人无码AV在线| 国产婷婷色一区二区三区| 清清草视频| 国产剧情一区二区av在线观看| 国产精品免费人成网站酒店| 久久久久999| 91在线无码精品秘国产-百度| 色色色999| 无码视频一二三区| 久久伊人综合| 婷婷色色网| 熟女人妻人妻の视频| 日本高清视频网站网wwwwww| 三级视频网址| aaaaaa在线观看免费高清| 国产一级AV国产免费| 国产黄色在线| 在线高清无码不卡| 成人午夜天堂| 久久久人妻| av女人天堂| 欧美亚洲综合在线观看| 无码高潮视频| 九九色| 这里有精品| 久久久免费黄色视频| 嫩BBB槡BBBB槡BBBB免费视频 | 一本久道综合| 西西WWW888大胆无码| 久久黄色免费视频| 久久av电影| 久久久婷婷五月亚洲国产精品| 人人操人人操人人操人人操| 国产福利免费| 人人妻人人干| 高清色视频| 五月黄色电影| 爱爱黄色视频| 国产操比网| 99精品国产热久久91色欲| 人人操人人操人人操人人| 水果派av解说| 欧美h网站| 超碰97在线精品国产| 精品自拍偷拍| 久久三级片| 五月天久久久久久久| 亚洲午夜精品久久久| 足交在线观看| 欧美性爱XXXX| AV高清无码在线| 亚洲中文字幕视频在线观看| yOujiZZ欧美精品| 国产探花自拍| 97超碰人人操| 久久免费精品| 午夜精品一区二区三区在线成人| 国产一级a毛一级a毛视频在线网站)| 久在线观看| 高清av免费| 国产性猛交╳XXX乱大交| 一级A黄片| 老熟女17页一91| 日本草逼网| 精品黑人| 伊人久久福利视频| caobi999| 男女AV网站| 丰滿人妻一区二区三区| 免费看欧美日黄片| 日韩免费高清无码视频| 欧美V| 美日韩视频欧美一区二区视频| 日韩亚洲在线视频| 91丨九色丨熟女丰满| 欧美成人精品A片免费一区99 | 九九九九国产| 免费激情网站| 亚洲国产免费| 三级片大香蕉| 探花在线播放| 伊人大香蕉电影| 成人黄色在线视频| 亚洲中文字幕日韩精品| 五月婷亚洲精品AV天堂| 东京热久久综合色五月老师| 国产激情一区二区三区| 久久xx| 亚洲精品在| 丁香六月啪啪| 亚洲日韩中文字幕在线观看| 中文字幕无码一区二区三区一本久| 久一视频| 亚洲欧美日韩黑料吃瓜在线观看| 黄色录像毛片| 99这里只有精品视频| 狼友视频免费| 特级西西444www精品视频| 亚洲AV无码乱码精品| 狠狠艹狠狠干| 国产91精品看黄网站在线观看 | 亚洲综合图色40p| 亚洲A级| 午夜无码鲁丝片午夜精品| 成人色色| 日本黄色三级视频| 亚洲成人动漫在线| 亚洲成人AⅤ| 国产特級黃色大片| 日本一级特黄大片AAAAA级| 久久免费视频观看| 国产,亚洲91| 日韩不卡在线观看| 91AV视频| 日韩在线观看中文字幕| 乱伦性爱视频| 国产无码一二三区| 69式荫蒂被添全过程频| 狼人狠干| 欧一美一色一伦一A片| 亚洲天堂无码| 婷婷五月天性爱| 成人在线黄色视频| 日韩精品中文无码| 色哟哟一区二区三区| 精品国产123| 欧美日韩在线电影| 黄色大片av| 国产美女高潮视频| 短发妹子双人啪啪秀| 亚洲无码一卡二卡| 亚洲AV无码乱码精品| 国产人妻AV| 亚洲黄色大片| 91亚洲国产成人精品一区二区三| 另类日韩| 国产伦精品一区二区三区色大师 | 北条麻妃在线一区| 国产欧美综合视频| 欧美人妻中文字幕| 一级A片免费黄色视频| 91黄色视频在线播放| 六月丁香五月婷婷| 51妺嘿嘿在线电影免费观看 | 日韩在线一区二区三区四区| 最新一区二区| 国产精品久久久久久无人区| 99热99| 成人AV午夜福利| 日韩二区三区| 91成人区| 亚洲精品国产精品国自产在线| 麻豆网站91| 性猛交AAAA片免费看蜜桃视频| 特级爱爱视频| 蜜桃av色偷偷av老熟女| 成人动漫一区| 无码精品人妻一区二区三区漫画| 苍井空精毛片精品久久久| 丰满老妇高潮一级A片| 亚洲无码一卡| 国产精品偷拍| 操逼操逼操逼操逼操逼操逼| 大香蕉手机在线视频| 日韩操逼av| 97国产免费| 免费观看一级黄片| 免费一级黄色视频| 人人人爽| 最好看的MV中文字幕国语电影 | 免费国产精品视频| 欧美三级在线视频| 欧美日韩日逼视频| 在线二区| 久草麻豆| 国产又粗又长又硬黄色一级片| 国产黄色视频网站在线观看| 三级一区二区| 国产黄色免费视频| 国产寡妇亲子伦一区二区三区四区| 99黄色| 伊人影院在线免费观看| 波多野结衣亚洲无码| 你懂得视频在线观看| 一本道高清无码视频| 在线黄色视频网站| 天天色综| 亚洲区中文字幕| caobi999| 免费看成人A片无码照片88hⅤ| 女女女女女女BBBBBB手| 99久久精品国产精品有折扣吗| 中文√在线天堂8| 色啪视频| 欧美在线| 久久成人123| 成人精品电影| 无码999| 国产主播福利| 草逼123| 日韩精品成人| 中文字幕35页| 99精品视频北条麻妃国产版| 欧美在线视频免费观看| 操b视频免费| 人妻无码免费视频| 黄色内射视频| 综合导航无码| 91蝌蚪视频在线观看| 免费看黄片视频| 黄网免费在线观看| 男人V天堂| AV在线观看黄| 日逼日逼日逼| 特黄特色一级特黄大片| 免费无码高清视频| 天天爽天天爽夜夜爽毛片| 91性爱小视频| 国产在线高潮| 欧美特级黄| 中文在线视频| 俺也去五月婷婷| AV第一页| 国产精品v| 特级西西人体444www高清大胆| 亚洲国产高清在线观看视频| 亚洲一区在线免费观看| 东北奇淫老老妇| 中文字幕AV在线播放| 亚洲人操逼视频| 蜜桃av久久久亚洲精品| 欧美日韩国产一区二区| 成人丁香五月| 人人操碰人人| 国产精品国产精品国产专区| 黄色一级小说| 五月婷婷色| A片免费播放| 少妇搡BBBB搡BBB搡18禁| 高潮视频在线观看| 久久精品苍井空免费一区二| 青青激情视频| 无码一区二区三区免费| 亚洲va在线| 中文字幕特黄A片| 久免费视频| 亚洲成人视频在线免费观看| 日韩中文无码一级A片| 五月天性爱| 奇米色婷婷| 91在线看18| 特级西西WWW888| 中文字幕日韩成人| 苍井空在线播放| 久久高清无码视频| 亚洲成人视频免费在线观看 | 亚洲激情性爱| 天堂中文字幕| 国产精彩无码视频| 欧美熟妇性爱视频| 国产精品福利视频| 久久久久久久久久成人永久免费视频| 日韩欧美国产成人| 操中国老女人| 一级片成人| 啊啊啊亚洲| 99视频精品| 国产日韩在线视频| 免费黄网站在线观看| 天天躁狠狠躁夜躁2024| 五月天av在线| 粉嫩小泬BBBBBB免费看| 樱桃码一区二区三区| 亚洲精品AⅤ一区二| 尤物精品在线| 亚洲国产精品成人综合色在线婷婷| www.超碰| 欧美日韩东京热| 中文字幕一本道| 国产婷婷色一区二区| www.色五月| 偷拍视频第一页| 丰满人妻一区二区三区精品高清| 久久性视频| 第一福利成人AV导航| 成人福利电影| 国产精品久久久久国产A级| 日本一级黃色大片看免费| 自拍偷拍一区二区| 人人摸人人操人人看| 久久三级片| 操逼网站在线观看| 国产日女人| 男女啪网站| 婷婷涩嫩草鲁丝久久午夜精品| 无码精品电影| 性BBW| 天天操天天操天天操天天| 亚洲国产精品视频| 亚洲性爱一级片| 3p视频网站| 五月婷婷黄色| 婷婷射| 亚洲福利网站| 国产精品美女毛片j酒店| 国产三级偷拍| 99国产在线| 亚洲精品成人7777777| 亚洲高清无码网站| 亚洲激情欧美激情| 欧美熟妇精品一二三区| 91三级| 91久久免费视频| 一级黄片免费视频| 高清操逼| 99国产在线观看| 日韩黄色电影网址| 粉嫩99精品99久久久久| 欧美成人在线免费| 成人激情视频A极| 成人在线中文字幕| 偷拍欧美日韩| AV日日| 久久久aaa| 国产亚洲久一区二区| 国产调教视频| 精品日韩一区二区三区| 青草久久网| 免费av毛片| 日韩无码高清视频| 性爱国产| 特级婬片A片AAA毛片AA做头| 无码乱| 久草网址| 日韩精品欧美一区二区三区 | 国产中文字幕片| 爱操视频| 国产精品国产精品国产专区不| 国产亚洲色婷婷久久99精品| www日韩欧美| 天天天天天天天天干| 99re在线观看| 超碰人人艹| 日一日射一射| 无码H| 无码人妻丰满熟妇区17水蜜桃 | 操屄视频免费观看| 青娱乐国产AV| 日韩无码不卡| 91精品综合| 口爆吞精在线| 丁香五月天av| 国产成人综合电影| 天天操大香蕉| 超碰天天干天天摸| 91传媒在线观看| 亚洲无码一区二区在线观看| 中文字幕高清无码在线观看| 欧美操逼在线观看| 午夜噜噜| 日韩aaa视频| 欧美一区| 伊人大香蕉综合| 日韩一级在线播放| 9797色色| 在线观看视频你懂的| 日韩一区二区视频在线观看| 黄色电影天堂网站| 91大铭哥| 九九热只有精品| 成人第一页| 蜜桃Av噜噜一区二区三| 神马午夜福利影院| 69国产成人综合久久精品欧美 | 天天日比| 亚洲天堂在线视频播放| 色婷婷中文在线| 成人做爱免费看| 北条麻妃一区二区三区-免费免费高清观看 | 无码高潮视频| 野花Av| 女人久久久久| 日本无码久久嗯啊流水| 亚洲无码中文字幕在线观看| 熟女人妻人妻の视频| 亚洲免费黄色电影| 99xxxxx| 午夜69成人做爱视频网站| 成功精品影院| 先锋影音资源一区| 日韩天堂在线播放| 粉嫩一区二区三区四区| 日本操逼在线播放| 五月AV| 最新av在线| 国产精品女| 欧美疯狂做受XXXXX高潮| 色五月AV| 日韩成人一级片| 99久久精品国产成人一区二区| 日韩在线视频二区| 国产一级免费观看| 久久精品免费看| 国内操B电影| 五月丁香在线观看| 欧美色交| 久草免费在线视频| 国产成人av在线| 国产亲子乱XXXXinin| 国产熟女一区二区| 午夜成人在线视频| 97精品欧美91久久久久久久| 成人免费黄色视频网站| 亚洲无码中文字幕在线| 蜜桃久久精品成人无码AV| 福利视频导航自拍| AV天堂小说网| 日韩视频免费看| 翔田千里被躁120分钟| 欧美日逼视频| 中文字幕无码在线| 日韩三级片网站| 国产一区二区无码| 五月天丁香社区| 黄网免费在线观看| 精品一区二区视频| 操逼操逼操逼操逼| 日本免费高清视频| 日韩在线观看一区| 91网站免费看| 97自拍| 亚洲小黄片| 中文字幕第315页| 成人国产在线无码AV免费 | 少妇嫩搡BBBB搡BBBB| 极品少妇AV| 91久久婷婷国产| 波多野结衣东京热| 黄色网址在线免费观看| 91亚洲高清| 欧美精品18| 国产一级操逼视频| aa久久| 中文字幕在线网址| 少妇白洁视频| 免费看国产黄色视频| 牛牛精品视频| 大香蕉久久久久久| 亚洲天堂在线观看免费| 久操视频网站| 日韩成人无码专区| 国产Av高清| 97大香蕉视频| 久久久久久性爱| AV色色| 日老女人的逼| 中文国产字幕| 激情丁香五月天| 日韩高清无码电影| 四虎成人视频| 中文字幕性爱| 成年人观看视频| 91精品人妻一区二区三区蜜桃欧美 | 免费国产黄色视频网站| 爱爱爱网址| 超碰在线图片| 91热爆在线| 天堂在线8| 日本爱爱网址| 日本成人黄色电影| 日韩在线视频免费播放| 国产一级婬乱片AV片AAA毛片| 日本黄色A片免费看| 中文字幕AV网| 91豆花成人社区| 国产午夜精品一区二区三区牛牛 | 91丨PORNY丨丰满人妻网站| 国产精品国产三级国产专业不| 国产成人亚洲综合A∨婷婷| 久久久久99精品成人网站| 99视频精品在线| 久草综合在线| 午夜熟睡乱子伦视频| 成人精品在线观看| 99热这里有精品| 国产欧美一区二区三区视频| 安徽少妇搡bbw搡bbbb| 香蕉网站操逼片| 超碰在线日韩| 亚洲成人电影天堂| 日韩porn| 一区二区三区四区| 日韩免费视频一区| 免费操B| 蜜臀99久久精品久久久懂爱 | 国产三级在线免费观看| 亚洲v在线观看| 69色综合| 成人操B| 亚洲一区在线播放| 欧美亚洲一区| 婷婷五月天在线观看| 一级操逼黄色视频| 夫妻无码| 国产性受XXXXXYX性爽| 波多野结衣在线无码视频| 69国产精品视频免费观看| 亚洲A片一区二区三区电影网| 午夜福利小视频| 国产福利免费| av在线一区二区| 麻豆av在线| 波多野结衣无码视频| 天天躁狠狠躁av| 亚洲韩国国产| 精品无人区无码乱码毛片国产| AV无码网| 日韩A片在线| 久久国产99| 精品国产一区二区三区久久久蜜月 | 在线观看不卡av| 伊人大香蕉视频在线观看| 亚洲精品美女| 亚洲无码高清一区| www亚洲无码| 久久午夜夜伦鲁鲁一区二区| 九九毛片| 8050午夜一级免费| 国产aaaaaaaaaaaaa| 国产污视频在线观看| 久久午夜无码鲁丝片主演是谁| 99Re66精品免费视频| 日韩成人在线观看视频| 91免费视频在线| 欧美日韩成人在线| 麻豆91免费看| 国产一区二区免费在线观看| 国产女人与禽zOz0性| 激情爱爱网| 日本久久综合| 污网站免费在线观看| AV资源在线| 天天狠天天干| 大香蕉99热| 永久m3u8在线观看| 91国语又粗又大对白| 亚洲一区AV| 五月丁香色婷婷| 黄色网址av| 特黄一级A片| 狠狠色噜噜狠狠狠888米奇视频| 日韩人妻码一区二区三区| 中文字幕精品亚洲熟女| 国产乱国产乱老熟300部视频 | 五月天婷婷激情| 久久久久国产一区二区三区四区 | 日韩中文字幕无码人妻| 秘蜜桃色一区二区三区在线观看| 操嫩逼视频| 一道本高清无码视频| 大香蕉三级片| 日韩一级片| 97色色婷婷五月天| 欧美不卡一区二区| 日韩av在线电影| 婷婷六月激情| 一区二区三区久久久| 夜夜爽夜夜爽| 91吴梦梦无码一区二区| 无码一区二区久久| 蜜桃BBwBBWBBwBBw| 人人插人人| 最新久欠一区二区免费看| 日韩不卡中文字幕| 天天射夜夜操| 中文字幕在线观看网址最新地址| 中文字幕在线免费视频| 高清无码不卡av| 东京热av一区二区| 性爱AV天堂| 91久久婷婷国产| www.三级| 五月天婷婷色播| 53岁露大奶熟女偷情贴吧| 黄片免费看网站| 高清av在线| 中文字幕免费在线看一区七区 | 国产丰满| 2025AV天堂网| 天天爱天天射| 欧美作爱| 2024国产精品| 日本特黄AA片免费视频| 大香蕉91| 亚洲激情性爱| 成人大香蕉视频| 自拍偷拍综合网| 日本免费黄色片| 天堂资源地址在线| 先锋影音资源一区| 欧美日韩激情视频| 黄色录像一级片| 88AV视频| 十八无码成人免费网站| 国产女人18毛片水18精品| 亚洲天天| 人妻被午夜福利AV| 黄色av网站在线观看| 亚洲网站在线播放| 人人操人人操人人操| 木下凛凛子AV888AV在线观看| AV-ThePorn| 先锋影音在线| 国内免费av| 在线观看AV91| 大香蕉伊人视频在线观看| 欧美操逼网址| 五月丁香综合激情| 黄色av无码| 丁香五月婷婷基地| 91免费看片| 中文字幕在线观看一区| 欧美操大逼| 日韩AV成人电影| 伊人天天干| 无套进入无套内谢| 国产小视频在线免费观看| 黄色一级免费电影| 日日撸| 青青大香蕉| 丁香五月情| 亚洲精品三级片| 日本一区二区网站| 可以看的毛片| 欧美亚洲在线| 99久久国内精品成人免费| 免费色色网站| www.国产| 中文字幕av久久波多野结| 亚洲日韩精品欧美一区二区yw| 三级片亚洲| 毛片网站在线| 国产在线观看97| 大香蕉9999| 蜜臀导航| 人人干人人操人人爽| 五月天丁香花| 欧美动态视频| 中文字幕1| 欧美乱伦内射| 亚洲成人福利| 久久人妻免费视频| 夜夜骑夜夜撸| 国产淫语| 国产一级婬片A片免费妖精视频| 四虎成人在线| 看看AV| www.操操网| xxxxxbbbbb| 三级片91| 国内一级A片| 亚洲精品久久久久毛片A级绿茶 | 成人精品秘久久久按摩下载| 在线视频免费观看| 成人午夜黄色| 无码9999| 五月婷婷深深爱| 午夜成人福利在线观看| 亚洲精品国产AV婷婷| 第四色大香蕉| 人人爱人人爽人人操| 欧美日韩亚洲综合| 黄片一区二区| 亚洲中文字幕无码在线观看| 91人妻综合| 91丨露脸丨熟女| 青青青国产在线| 国产黄A| 午夜无码鲁丝片午夜精品| 色五月激情小说| 成人小说在线观看| 久久久久久成人无码| 国产在线A片| 无码A片| 国产尤物在线观看| 国产AV一二三区| 国产清纯可爱美女自卫裸贷偷情| 俺也来最新色视频| 国产传媒在线|