成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 如何理解python接口自動化之logging日志模塊

如何理解python接口自動化之logging日志模塊

熱門標簽:洪澤縣地圖標注 梅州外呼業(yè)務(wù)系統(tǒng) 無錫客服外呼系統(tǒng)一般多少錢 百度地圖標注位置怎么修改 大連crm外呼系統(tǒng) 高德地圖標注是免費的嗎 老人電話機器人 地圖標注視頻廣告 北京電信外呼系統(tǒng)靠譜嗎

一、logging模塊介紹

​前言:我們之前運行代碼時都是將日志直接輸出到控制臺,而實際項目中常常需要把日志存儲到文件,便于查閱,如運行時間、描述信息以及錯誤或者異常發(fā)生時候的特定上下文信息。

​Python中自帶的logging模塊提供了標準的日志接口,在debug時使用往往會事半功倍。為什么不直接使用print去輸出呢?這種方式對簡單的腳本來說有用,對于復(fù)雜的系統(tǒng)來說相當(dāng)于一個花瓶擺設(shè),大量的print輸出很容易被遺忘在代碼里,并且print是標準輸出,這很難從一堆信息里去判斷哪些是你需要重點關(guān)注的。

​logging的優(yōu)勢就在于可以控制日志的級別,把不需要的信息進行過濾,且可以決定它輸出到什么地方、如何輸出,還可以通過控制等級把特定等級的信息輸出到特定的位置等。logging一共分為四個部分:

  • Loggers:日志收集器,可供程序直接調(diào)用的接口,app通過調(diào)用提供的api來記錄日志
  • Handlers:日志處理器, 決定將日志記錄分配至正確的目的地
  • Filters:日志過濾器,對日志信息進行過濾, 提供更細粒度的日志是否輸出的判斷
  • Formatters:日志格式器,制定最終記錄打印的格式布局

二、日志等級

​logging將logger的等級劃分成5個level,由低到高分別是DEBUG、INFO、WARNING、ERROE、CRITICAL,默認是WARNING級別,CRITICAL最高,相關(guān)等級說明如下:

Level 說明
DEBUG 輸出詳細的運行信息,主要用于調(diào)試,追蹤問題時使用
INFO 輸出正常的運行的信息,一切按預(yù)期進行的情況
WARNING 一些意想不到的或即將會發(fā)生的情況,比如警告:內(nèi)存空間不足,但不影響程序運行
ERROR 由于某些問題,程序的一些功能會受到影響,還可以繼續(xù)運行
CRITICAL 一個嚴重的錯誤,表明程序本身可能無法繼續(xù)運行

​這些等級的日志中低包含高,比如INFO,會收集INFO及以上等級的日志,DEBUG等級的日志將不進行收集。下面我們來輸出這5個等級的日志:

import logging

"""
logging模塊默認收集的日志是warning以上等級的

"""

a = 100
logging.debug(a)
logging.info('這是INFO等級的信息')
logging.warning('這是WARNING等級的信息')
logging.error('這是ERROR等級的信息')
logging.critical('這是CRITICAL等級的信息')

​輸出結(jié)果:

C:\software\python\python.exe D:/learn/test.py

WARNING:root:這是WARNING等級的信息

ERROR:root:這是ERROR等級的信息

CRITICAL:root:這是CRITICAL等級的信息

Process finished with exit code 0

三、日志收集器

​日志是怎么被收集和輸出的呢?答案就是日志收集器,設(shè)置一個收集器,把指等級的日志信息輸出到指定的地方,控制臺或文件等,其工作過程大致如下:

​logging中默認的日志收集器是root,收集等級默認是WARNING,我們可以通過setLevel來改變它的收集等級。

# 獲取默認的日志收集器root
my_log = logging.getLogger()
# 設(shè)置默認的日志收集器等級
my_log.setLevel("DEBUG")  # 日志將全部被收集

a = 100
logging.debug(a)
logging.info('這是INFO等級的信息')
logging.warning('這是WARNING等級的信息')
logging.error('這是ERROR等級的信息')
logging.critical('這是CRITICAL等級的信息')

​輸出結(jié)果:

C:\software\python\python.exe D:/learn/test.py

DEBUG:root:100

INFO:root:這是INFO等級的信息

WARNING:root:這是WARNING等級的信息

ERROR:root:這是ERROR等級的信息

CRITICAL:root:這是CRITICAL等級的信息

Process finished with exit code 0

​除了使用默認的日志收集器,我們也可以自己創(chuàng)建一個收集器logging.getLogger,如下:

import logging

my_logger = logging.getLogger('my_logger')	# 創(chuàng)建logging對象
my_logger.setLevel('INFO')	# 設(shè)置日志收集等級

a = 100
logging.debug(a)
logging.info('這是INFO等級的信息')
logging.warning('這是WARNING等級的信息')
logging.error('這是ERROR等級的信息')
logging.critical('這是CRITICAL等級的信息')

​輸出結(jié)果:

C:\software\python\python.exe D:/learn/test.py

WARNING:root:這是WARNING等級的信息

ERROR:root:這是ERROR等級的信息

CRITICAL:root:這是CRITICAL等級的信息

Process finished with exit code 0

四、日志處理器

​上面例子中設(shè)置的收集器都是輸出到控制臺,除此我們還可以輸出到文件中。

​Handlers(處理器)的作用就是將logger發(fā)過來的信息進行準確地分配,送往正確的地方。比如,送往控制臺、文件或者是兩者。它決定了每個日志收集器的行為,是創(chuàng)建收集器之后需要配置的重點區(qū)域。每個Handler同樣有一個日志級別,一個logger可以擁有多個handler也就是說logger可以根據(jù)不同的日志級別將日志傳遞給不同的handler。當(dāng)然也可以相同的級別傳遞給多個handler,這就根據(jù)需求來靈活的配置了。

​下面實例中設(shè)置了兩個handler,一個是輸出到控制臺,一個是輸出到文件中。關(guān)鍵代碼:

  • logging.StreamHandler:輸出到控制臺的處理器
  • logging.FileHandler:輸出到文件的處理器
  • addHandler:添加處理器
  • removeHandler:移除處理器
import logging

my_logger = logging.getLogger('my_logger')
my_logger.setLevel('INFO')

# 創(chuàng)建一個輸出到控制臺的處理器
sh = logging.StreamHandler()
sh.setLevel("ERROR")    # 設(shè)置處理器的輸出等級
my_logger.addHandler(sh)    # 將處理器綁定到日志收集器上

# 創(chuàng)建一個輸出到文件的處理器
fh = logging.FileHandler("logs.logs", encoding="utf8")
fh.setLevel("INFO")
my_logger.addHandler(fh)
# my_logger.removeHandler(fh)	# 移除處理器

a = 100
my_logger.debug(a)
my_logger.info('這是INFO等級的信息')
my_logger.warning('這是WARNING等級的信息')
my_logger.error('這是ERROR等級的信息')
my_logger.critical('這是CRITICAL等級的信息')

運行結(jié)果:

C:\software\python\python.exe D:/learn/test.py

這是ERROR等級的信息

這是CRITICAL等級的信息

Process finished with exit code 0

五、日志過濾器

​Filters可以實現(xiàn)比level更復(fù)雜的過濾功能,限制只有滿足過濾規(guī)則的日志才會被輸出。比如我們定義了filter = logging.Filter('A.B'),并將這個Filter添加到了一個Handler上,則使用該Handler的Logger中只有名字帶A.B前綴的Logger才能輸出其日志。下面是一個簡單實例:

import logging

# 這是logger1
my_logger = logging.getLogger('A.C,B')
my_logger.setLevel('INFO')

# 這是logger2
my_logger2 = logging.getLogger('A.B')
my_logger2.setLevel('INFO')

# 創(chuàng)建一個處理器,兩個logger都使用這個處理器
sh = logging.StreamHandler()
sh.setLevel("ERROR")
my_logger.addHandler(sh)
my_logger2.addHandler(sh)

# 創(chuàng)建一個過濾器綁到處理器上
my_filter = logging.Filter(name='A.B')
sh.addFilter(my_filter)    # 把過濾器添加到處理器上
# sh2.removeFilter(my_filter)   # 移除過濾器

my_logger.debug('這是logger1-DEBUG等級的信息')
my_logger.info('這是logger1-INFO等級的信息')
my_logger.warning('這是logger1-WARNING等級的信息')
my_logger.error('這是logger1-ERROR等級的信息')
my_logger.critical('這是logger1-CRITICAL等級的信息')

my_logger2.debug('這是logger2-DEBUG等級的信息')
my_logger2.info('這是logger2-INFO等級的信息')
my_logger2.warning('這是logger2-WARNING等級的信息')
my_logger2.error('這是logger2-ERROR等級的信息')
my_logger2.critical('這是logger2-CRITICAL等級的信息')

​因為只有l(wèi)ogger2滿足過濾器的條件,因此只會輸出logger2的日志,運行結(jié)果如下:

C:\software\python\python.exe D:/learn/test.py

這是logger2-ERROR等級的信息

這是logger2-CRITICAL等級的信息

Process finished with exit code 0

​filter方法用于具體控制傳遞的record記錄是否能通過過濾,如果該方法返回值為0表示不能通過過濾,非0表示可以通過過濾。

六、日志格式器

​顧名思義,對日志進行格式化,因為常規(guī)的日志輸出并不直觀美觀,通過美化日志的輸出格式,可以讓我們閱讀起來更加舒服。

​format常用格式如下:

  • %(name)s: 打印收集器名稱
  • %(levelno)s: 打印日志級別的數(shù)值
  • %(levelname)s: 打印日志級別名稱
  • %(pathname)s: 打印當(dāng)前執(zhí)行程序的路徑,其實就是sys.argv[0]
  • %(filename)s: 打印當(dāng)前執(zhí)行程序名
  • %(funcName)s: 打印日志的當(dāng)前函數(shù)
  • %(lineno)d: 打印日志的當(dāng)前行號
  • %(asctime)s: 打印日志的時間
  • %(thread)d: 打印線程ID
  • %(threadName)s: 打印線程名稱
  • %(process)d: 打印進程ID
  • %(message)s: 打印日志信息
import logging

my_logger = logging.getLogger('A.C,B')
my_logger.setLevel('INFO')

# 創(chuàng)建一個處理器
sh = logging.StreamHandler()
sh.setLevel("ERROR")
my_logger.addHandler(sh)
# 設(shè)置一個格式,并設(shè)置到處理器上
formatter = logging.Formatter('%(asctime)s - [%(filename)s-->line:%(lineno)d] - %(levelname)s: %(message)s')
sh.setFormatter(formatter)

my_logger.debug('這是logger1-DEBUG等級的信息')
my_logger.info('這是logger1-INFO等級的信息')
my_logger.warning('這是logger1-WARNING等級的信息')
my_logger.error('這是logger1-ERROR等級的信息')
my_logger.critical('這是logger1-CRITICAL等級的信息')

​運行結(jié)果:

C:\software\python\python.exe D:/learn/test.py

2020-08-01 18:28:43,645 - [test.py-->line:17] - ERROR: 這是logger1-ERROR等級的信息

2020-08-01 18:28:43,645 - [test.py-->line:18] - CRITICAL: 這是logger1-CRITICAL等級的信息

Process finished with exit code 0

七、日志滾動

​如果你用 FileHandler 存儲日志,文件的大小會隨著時間推移而不斷增大,最終有一天它會占滿你所有的磁盤空間。Python 的 logging 模塊提供了兩個支持日志滾動的 FileHandler 類,分別是 RotatingFileHandler 和 TimedRotatingFileHandler,它就可以解決這個尷尬的問題。

  • RotatingFileHandler 的滾動時刻是日志文件的大小達到一定值,當(dāng)達到指定值的時候,RotatingFileHandler會將日志文件重命名存檔,然后打開一個新的日志文件。
  • TimedRotatingFileHandler 是當(dāng)某個時刻到來時就進行滾動,同 RotatingFileHandler 一樣,當(dāng)滾動時機來臨時,TimedRotatingFileHandler 會將日志文件重命名存檔,然后打開一個新的日志文件。

​在實際應(yīng)用中,我們通常會根據(jù)時間進行滾動,以下實例也以時間滾動為例,按大小滾動的同理:

import logging
from logging.handlers import TimedRotatingFileHandler

my_logger = logging.getLogger('A.C,B')
my_logger.setLevel('INFO')

# 創(chuàng)建一個處理器,使用時間滾動的文件處理器
log_file_handler = TimedRotatingFileHandler(filename='log.log', when='D', interval=1, backupCount=10)
# log_file_handler.suffix = "%Y-%m-%d"
# log_file_handler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}.log$")
log_file_handler.setLevel("ERROR")
my_logger.addHandler(log_file_handler)

# 設(shè)置一個格式,并設(shè)置到處理器上
formatter = logging.Formatter('%(asctime)s - [%(filename)s-->line:%(lineno)d] - %(levelname)s: %(message)s')
log_file_handler.setFormatter(formatter)

my_logger.debug('這是logger1-DEBUG等級的信息')
my_logger.info('這是logger1-INFO等級的信息')
my_logger.warning('這是logger1-WARNING等級的信息')
my_logger.error('這是logger1-ERROR等級的信息')
my_logger.critical('這是logger1-CRITICAL等級的信息')

​參數(shù)說明:

filename:日志文件名;

when:是一個字符串,用于描述滾動周期的基本單位,字符串的值及意義如下:

  • S - Seconds
  • M - Minutes
  • H - Hours
  • D - Days
  • midnight - roll over at midnight
  • W{0-6} - roll over on a certain day; 0 - Monday

interval: 滾動周期,單位由when指定,比如:when='D',interval=1,表示每天產(chǎn)生一個日志文件;

backupCount: 表示日志文件的保留個數(shù);

​除了上述參數(shù)之外,TimedRotatingFileHandler還有兩個比較重要的成員變量,它們分別是suffix和extMatch。suffix是指日志文件名的后綴,suffix中通常帶有格式化的時間字符串,filename和suffix由“.”連接構(gòu)成文件名(例如:filename="test", suffix="%Y-%m-%d.log",生成的文件名為test.2020-08-01.log。extMatch是一個編譯好的正則表達式,用于匹配日志文件名的后綴,它必須和suffix是匹配的,如果suffix和extMatch匹配不上的話,過期的日志是不會被刪除的。比如,suffix=“%Y-%m-%d.log”, extMatch的只能是re.compile(r"^\d{4}-\d{2}-\d{2}.log$")。默認情況下,在TimedRotatingFileHandler對象初始化時,suffxi和extMatch會根據(jù)when的值進行初始化:

S:suffix="%Y-%m-%d_%H-%M-%S",extMatch=r"\^d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}";
M:suffix="%Y-%m-%d_%H-%M",extMatch=r"^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}";
H:suffix="%Y-%m-%d_%H",extMatch=r"^\d{4}-\d{2}-\d{2}_\d{2}";
D:suffxi="%Y-%m-%d",extMatch=r"^\d{4}-\d{2}-\d{2}";
MIDNIGHT:"%Y-%m-%d",extMatch=r"^\d{4}-\d{2}-\d{2}";
W:"%Y-%m-%d",extMatch=r"^\d{4}-\d{2}-\d{2}";

​如果對日志文件名沒有特殊要求的話,可以不用設(shè)置suffix和extMatch,如果需要,一定要讓它們匹配上。

八、模塊封裝

​一次封裝,一勞永逸,之后直接調(diào)用即可,封裝內(nèi)容按需。

import logging
from logging.handlers import TimedRotatingFileHandler


class MyLogger(object):

    @staticmethod
    def create_logger():
        my_logger = logging.getLogger("my_logger")
        my_logger.setLevel("DEBUG")
        # 控制臺處理器
        stream_handler = logging.StreamHandler()
        stream_handler.setLevel("ERROR")
        my_logger.addHandler(stream_handler)
        # 使用時間滾動的文件處理器
        log_file_handler = TimedRotatingFileHandler(filename='log.log', when='D', interval=1, backupCount=10)
        log_file_handler.setLevel("INFO")
        my_logger.addHandler(log_file_handler)
        
        formatter = logging.Formatter('%(asctime)s - [%(filename)s-->line:%(lineno)d] - %(levelname)s: %(message)s')
        stream_handler.setFormatter(formatter)
        log_file_handler.setFormatter(formatter)

        return my_logger

以上就是如何理解python接口自動化之logging日志模塊的詳細內(nèi)容,更多關(guān)于python 接口自動化 logging日志模塊的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Python接口自動化淺析logging日志原理及模塊操作流程

標簽:泉州 安慶 怒江 岳陽 清遠 吉林 洛陽 長春

巨人網(wǎng)絡(luò)通訊聲明:本文標題《如何理解python接口自動化之logging日志模塊》,本文關(guān)鍵詞  如何,理解,python,接口,自動化,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《如何理解python接口自動化之logging日志模塊》相關(guān)的同類信息!
  • 本頁收集關(guān)于如何理解python接口自動化之logging日志模塊的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    日韩有码一区二区三区| 国产特黄大片aaaa毛片| 国产美女高潮在线| 日韩精品一区二区三区在线观看| 欧美**vk| 成年网站免费在线观看| 欧美日韩国产免费一区二区三区| 粉嫩粉嫩芽的虎白女18在线视频| 国产精品久久久久久av福利软件| 中文字幕日本三级| 国产精品99久久久久久人| 制服丝袜日韩| 欧美热在线视频精品999| 国产黄色免费看| 国产精品影视在线观看| 国产精品不卡视频| 蜜臀久久99精品久久久久久| 精品精品导航| 色悠久久久久综合先锋影音下载| 午夜免费福利网站| 亚洲综合一区二区精品导航| 澳门av一区二区三区| 亚洲高清国产拍精品26u| 亚洲精品一区二区三区香蕉| 中文字幕欧美日韩va免费视频| 一级片在线免费播放| 一区二区电影在线观看| 久久99精品久久久久久久青青日本| 久久成人麻豆午夜电影| 日本精品一区二区三区视频| 久久精品主播| 最新国产在线精品91尤物| 成年在线观看免费人视频| 91禁国产网站| 国产精品aaa| 亚洲三级精品| 亚洲激情一区| 免费能直接在线观看黄的视频| 久久免费看视频| 色综合久久六月婷婷中文字幕| 自拍在线播放| 麻豆中文字幕在线观看| 丁香六月激情综合| 91国产精品91| 精品成人自拍视频| 91精品在线影院| 成人网免费看| 国产蜜臀av在线一区二区三区| 国产精品第一页第二页第三页| 伊人久久大香线蕉综合影院首页| 最新国产精品| 少妇bbbb搡bbbb| 日韩久久久久久久久久久久| 亚洲国模精品一区| 成年女人色毛片免费| 精品一区二区三区四区五区六区| 91成品人片a无限观看| 亚洲一区二区自拍| 先锋影音一区二区三区| 伊人激情综合网| 天天想你在线观看完整版电影免费| 欧美日韩一卡二卡| 2017亚洲男人天堂| 美女福利视频在线| 最近2019中文字幕mv免费看| 野外性xxxxfreexxxxx欧美| 国产精品免费视频一区| 麻豆视频免费网站| 在线观看亚洲成人| 中国一级片黄色一级片黄| 国产精品9999久久久久仙踪林| 久久精品欧美日韩| 欧美天堂亚洲电影院在线播放| 亚洲综合爱爱久久网| 情趣网站视频在线观看| 国产精品久久久久久久av福利| 国外成人福利视频| 亚洲色图图片区| 99热在线免费| 黑人巨大精品欧美一区二区| 999在线观看免费大全电视剧| 国产精品亚洲专一区二区三区| 一区二区免费在线| 国产成人精品网| 欧洲一区二区日韩在线视频观看免费| 午夜影院免费观看视频| 九一亚洲精品| 亚洲激情中文在线| 在线亚洲精品| 国产精品乱码妇女bbbb| 在线观看国产福利视频| 特级西西人体4444xxxx| 成人在线一级片| 亚洲精品一区二区三区香蕉| 曰批又黄又爽免费视频| 国产一卡二卡3卡4卡四卡在线| 国产精品人人妻人人爽人人牛| 久艹在线视频| 亚洲天堂二区| 91精品国模一区二区三区| 国产美女在线一区| 久久夜色精品国产欧美乱| 丰满人妻一区二区三区四区| 国产情侣呻吟对白高潮| 亚洲精品久久久久国产| 久久精品国产精品亚洲精品色| 中文字幕在线永久| www插插插无码视频网站| 国产欧美欧美| 你懂得在线视频| 中国日韩欧美久久久久久久久| 日韩亚洲一区在线播放| 日本午夜精品一区二区三区电影| 亚洲福利av在线| 日本一区二区三级电影在线观看| 色婷婷狠狠五月综合天色拍| 欧美激情导航| 青青草精品视频在线| 四虎永久在线精品免费一区二区| 国产精品18久久久久| 国产高清中文字幕| 两个人日本在线观看视频| 九九九九精品| 污的视频网站| 国产三区在线成人av| 伊人网在线观看| 国产日韩欧美精品一区二区三区| 日韩高清国产一区在线观看| 精品推荐国产麻豆剧传媒| 国产成人亚洲欧洲在线| 成人高清视频免费观看| 久久99国产成人小视频| 欧美午夜性色大片在线观看| 日日夜夜精品网站| 亚洲精品第一区二区三区| 91大神在线资源观看无广告| 变态另类丨国产精品| 777一区二区| 六月婷婷中文字幕| 欧美午夜小视频| 欧美黄色免费网站| av漫画在线观看| 亚洲国产高潮在线观看| 国产精品白浆一区二小说| 日韩电影视频免费| 国产精品一卡二卡三卡| 国产精品视频看| 日本一二区不卡| 一二三四视频在线社区中文字幕2| 91午夜国产| 亚洲区精品久久一区二区三区| 亚洲av无码国产精品久久| 免费高清视频日韩| 日韩激情文学| 精品一区二区三区的国产在线观看| 四虎影院在线免费播放| 成人免费看片视频在线观看| 黄色在线网站| 在线免费观看日本一区| 国产欧美日韩卡一| 无码人妻少妇色欲av一区二区| 亚洲一区二区3| 欧美三级午夜理伦三级富婆| 韩国av网站在线| 欧美video巨大粗暴18| 亚洲av成人无码网天堂| 国产a级片免费观看| 欧美男男青年gay1069videost| 高清视频欧美一级| www国产91| 柠檬在线导航福利| 成人激情免费在线| 欧美va亚洲va| 国产精品nxnn| 免费黄频在线观看| 久久综合亚洲社区| 国产一区高清| 日韩欧美黄色片| 国产精品久久久久永久免费看| 成人精品动漫一区二区三区| av网站网址在线观看| 欧美精品在线第一页| 一级免费黄色录像| 999日本视频| 波多野结衣欲乱| 麻豆国产一区| 多男操一女视频| 午夜国产视频| 情趣网站在线观看| 97精品伊人久久久大香线蕉| 欧美超碰在线| 国产九一精品| 性欧美性free| 久久一区二区三区国产精品| 91porn在线视频| 精品日韩在线播放| 精品亚洲欧美日韩| 日韩av在线播| 亚洲免费黄色网| 国产v日韩v欧美v| 日本视频免费高清一本18| 午夜午夜精品一区二区三区文| 欧美日韩视频精品二区| 久久91精品国产91久久跳| 免费观看国产视频| 日本一区二区三区免费乱视频| 亚洲人做受高潮| 亚洲制服中文字幕| 中国人体摄影一区二区三区| 国产成人av福利| 天天综合天天综合色| 老鸭窝91久久精品色噜噜导演| 欧美亚洲一区二区三区| 亚洲成人免费在线| 99热国产免费| 巨大荫蒂视频欧美大片| 九九九伊在人线综合| 亚洲欧美在线一区| 日韩 欧美 视频| 日本在线视频中文有码| 久操精品在线| 久久深夜福利| 综合天堂久久久久久久| 成视频在线观看免费观看| 国产精品毛片a∨一区二区三区| 国产精品成人一区二区三区夜夜夜| 毛片久久久久久| 青娱乐国产视频| 欧美日韩免费观看一区二区三区| 好看的黄色网址| 黄色av网址在线播放| 亚洲欧美国产一本综合首页| 国产精品www在线观看| 岛国在线免费| 欧美亚洲免费高清在线观看| melody高清在线观看| 欧美男女视频| 午夜爽爽爽男女免费观看| 成人国产精品免费观看动漫| 国产日产精品1区| 午夜视频在线播放| 亚洲调教视频在线观看| 欧美视频在线观看一区| 91精品久久久久久粉嫩| 亚洲色无码播放| 国产精品久久久久久久久久久久久久久| 日韩免费av一区| 欧美成人国产精品高潮| seba5欧美综合另类| 免费永久网站黄欧美| 欧美综合社区国产| 97视频在线免费观看| 黑人40厘米全进去| 天堂网在线中文| 亚洲18私人小影院| 日韩成人在线视频观看| 美日韩精品视频免费看| 白浆爆出在线观看| av天堂一区二区三区| 日本视频一区二区| 国产高清无密码一区二区三区| 成人欧美一区二区三区在线湿哒哒| 38少妇精品导航| 最近2018年在线中文字幕高清| 少妇高潮一区二区三区喷水| 国产日韩欧美精品一区| 男人天堂欧美日韩| 中文字幕中文字幕99| 黄色成人免费观看| 在线播放亚洲一区| 免费国产阿v视频在线观看| 国产高清一区二区| 黄色免费网址大全| 欧美高清精品3d| 国产一区二区三区视频免费观看| 婷婷精品视频| 国产青青草视频| 日韩精品乱码av一区二区| 亚洲免费一区三区| 久久精品国产一区二区三区日韩| 免费麻豆国产一区二区三区四区| 折磨小男生性器羞耻的故事| 青青草影院在线观看| 久久日本片精品aaaaa国产| 欧美激情一区二区久久久| 亚洲国产你懂的| www.中文字幕久久久| 欧美激情久久久久| 5858p先锋影音资源网| asian性开放少妇pics| 亚洲一区中文字幕在线| 九九99玖玖| 精品影视av免费| 国产成人羞羞电影网站在线观看| 污污视频网站免费观看| 一区二区三区午夜视频| 国产黄色小视频在线观看| 亚洲麻豆视频| 韩日欧美一区二区三区| 亚洲成人午夜电影| 成黄免费在线| 免费看片91| 欧美激情精品| 亚洲一区三区电影在线观看| 牛牛精品一区二区| 青青青草视频在线| 亚洲第一视频在线| 日韩在线视频一区| 欧美男女交配| 91人人网站| 影音av资源网| 日本不卡视频在线观看| 91精品国产黑色紧身裤美女| 亚洲女同精品视频| 欧美mv日韩mv| 久久99蜜桃精品| 日本一二三区视频在线| 一本免费视频| h无码动漫在线观看| 亚洲精品在线观看www| 丁香婷婷在线| 国产高清成人在线| 国产一级片一区二区| 亚洲精品国产精品国自产在线| 日韩色妇久久av| 亚洲国产伊人| eeuss网址直达入口| 免费黄色福利视频|