精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何優雅收集和管理應用的多行日志

開發 后端
在本文中,我們將介紹一些常用日志收集工具處理多行日志的策略。

 多行日志(例如異常信息)為調試應用問題提供了許多非常有價值的信息,在分布式微服務流行的今天基本上都會統一將日志進行收集,比如常見的 ELK、EFK 等方案,但是這些方案如果沒有適當的配置,它們是不會將多行日志看成一個整體的,而是每一行都看成獨立的一行日志進行處理,這對我們來說是難以接受的。

在本文中,我們將介紹一些常用日志收集工具處理多行日志的策略。

1JSON

保證多行日志作為單個事件進行處理最簡單的方法就是以 JSON 格式記錄日志,比如下面是常規 Java 日常日志的示例: 

  1. # javaApp.log  
  2. 2019-08-14 14:51:22,299 ERROR [http-nio-8080-exec-8] classOne: Index out of range  
  3. java.lang.StringIndexOutOfBoundsException: String index out of range: 18  
  4.  at java.lang.String.charAt(String.java:658)  
  5.  at com.example.app.loggingApp.classOne.getResult(classOne.java:15)  
  6.  at com.example.app.loggingApp.AppController.tester(AppController.java:27)  
  7.  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  8.  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)  
  9.  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
  10.  at java.lang.reflect.Method.invoke(Method.java:498)  
  11.  at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)  
  12.  at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)  
  13. [...] 

如果直接收集上面的日志會識別為多行日志,如果我們用 JSON 格式來記錄這些日志,然后介紹 JSON 的數據就簡單多了,比如使用 Log4J2 來記錄,變成下面的格式: 

  1. {"@timestamp":"2019-08-14T18:46:04.449+00:00","@version":"1","message":"Index out of range","logger_name":"com.example.app.loggingApp.classOne","thread_name":"http-nio-5000-exec-6","level":"ERROR","level_value":40000,"stack_trace":"java.lang.StringIndexOutOfBoundsException: String index out of range: 18\n\tat java.lang.String.charAt(String.java:658)\n\tat com.example.app.loggingApp.classOne.getResult(classOne.java:15)\n\tat com.example.app.loggingApp.AppController.tester(AppController.java:27)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)\n\tat 
  2. [...]  

 這樣整個日志消息都包含在單個 JSON 對象匯總了,其中就包含完整的異常堆棧信息,絕大多數工具都支持直接解析 JSON 日志數據,這是最簡單的一種方法,對于運維同學來說也是最省心的,但是大部分開發人員是抵觸用 JSON 格式來記錄日志的~~~

2Logstash

對于使用 Logstash 的用戶來說,要支持多行日志也不困難,Logstash 可以使用插件解析多行日志,該插件在日志管道的 input 部分進行配置。例如,下面的配置表示讓 Logstash 匹配你的日志文件中 ISO8601 格式的時間戳,當匹配到這個時間戳的時候,它就會將之前所有不以時間戳開頭的內容折疊到之前的日志條目中去。 

  1. input {  
  2.   file {  
  3.     path => "/var/app/current/logs/javaApp.log"  
  4.     mode => "tail"  
  5.     codec => multiline {  
  6.       pattern => "^%{TIMESTAMP_ISO8601} "  
  7.       negate => true  
  8.       what => "previous"  
  9.     }  
  10.   }  

3Fluentd

和 Logstash 類似,Fluentd 也允許我們使用一個插件來處理多行日志,我們可以配置插件接收一個或多個正則表達式,以下面的 Python 多行日志為例: 

  1. 2019-08-01 18:58:05,898 ERROR:Exception on main handler  
  2. Traceback (most recent call last):  
  3.   File "python-logger.py", line 9, in make_log  
  4.     return word[13]  
  5. IndexError: string index out of range 

如果沒有 multiline 多行解析器,Fluentd 會把每行當成一條完整的日志,我們可以在 <source> 模塊中添加一個 multiline 的解析規則,必須包含一個 format_firstline 的參數來指定一個新的日志條目是以什么開頭的,此外還可以使用正則分組和捕獲來解析日志中的屬性,如下配置所示: 

  1. <source>  
  2.   @type tail  
  3.   path /path/to/pythonApp.log  
  4.   tag sample.tag  
  5.   <parse>  
  6.     @type multiline  
  7.     format_firstline /\d{4}-\d{1,2}-\d{1,2}/  
  8.     format1 /(?<timestamp>[^ ]* [^ ]*) (?<level>[^\s]+:)(?<message>[\s\S]*)/  
  9.   </parse>  
  10. </source> 

在解析部分我們使用 @type multiline 指定了多行解析器,然后使用 format_firstline 來指定我們多行日志開頭的規則,這里我們就用一個簡單的正則匹配日期,然后指定了其他部分的匹配模式,并為它們分配了標簽,這里我們將日志拆分成了 timestamp、level、message 這幾個字段。

經過上面的規則解析過后,現在 Fluentd 會將每個 traceback 日志看成一條單一的日志了: 

  1.  
  2.   "timestamp": "2019-08-01 19:22:14,196",  
  3.   "level": "ERROR:",  
  4.   "message": "Exception on main handler\nTraceback (most recent call last):\n  File \"python-logger.py\", line 9, in make_log\n    return word[13]\nIndexError: string index out of range" 
  5.  

該日志已被格式化為 JSON,我們匹配的標簽也被設置為了 Key。

在 Fluentd 官方文檔中也有幾個示例說明:

  •  Rails 日志

比如輸入的 Rails 日志如下所示: 

  1. Started GET "/users/123/" for 127.0.0.1 at 2013-06-14 12:00:11 +0900  
  2. Processing by UsersController#show as HTML  
  3.   Parameters: {"user_id"=>"123"}  
  4.   Rendered users/show.html.erb within layouts/application (0.3ms)  
  5. Completed 200 OK in 4ms (Views: 3.2ms | ActiveRecord: 0.0ms) 

我們可以使用下面的解析配置進行多行匹配: 

  1. <parse>  
  2.   @type multiline  
  3.   format_firstline /^Started/  
  4.   format1 /Started (?<method>[^ ]+) "(?<path>[^"]+)" for (?<host>[^ ]+) at (?<time>[^ ]+ [^ ]+ [^ ]+)\n/  
  5.   format2 /Processing by (?<controller>[^\u0023]+)\u0023(?<controller_method>[^ ]+) as (?<format>[^ ]+?)\n/  
  6.   format3 /(  Parameters: (?<parameters>[^ ]+)\n)?/  
  7.   format4 /  Rendered (?<template>[^ ]+) within (?<layout>.+) \([\d\.]+ms\)\n/  
  8.   format5 /Completed (?<code>[^ ]+) [^ ]+ in (?<runtime>[\d\.]+)ms \(Views: (?<view_runtime>[\d\.]+)ms \| ActiveRecord: (?<ar_runtime>[\d\.]+)ms\)/  
  9. </parse> 

解析過后得到的日志如下所示: 

  1.  
  2.   "method"           :"GET",  
  3.   "path"             :"/users/123/",  
  4.   "host"             :"127.0.0.1",  
  5.   "controller"       :"UsersController",  
  6.   "controller_method":"show",  
  7.   "format"           :"HTML",  
  8.   "parameters"       :"{ \"user_id\":\"123\"}",  
  9.   ...  
  •     Java 堆棧日志

比如現在我們要解析的日志如下所示: 

  1. 2013-3-03 14:27:33 [main] INFO  Main - Start  
  2. 2013-3-03 14:27:33 [main] ERROR Main - Exception  
  3. javax.management.RuntimeErrorException: null  
  4.     at Main.main(Main.java:16) ~[bin/:na] 
  5. 2013-3-03 14:27:33 [main] INFO  Main - End 

則我們可以使用下面的解析規則進行多行匹配: 

  1. <parse>  
  2.   @type multiline  
  3.   format_firstline /\d{4}-\d{1,2}-\d{1,2}/  
  4.   format1 /^(?<time>\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}) \[(?<thread>.*)\] (?<level>[^\s]+)(?<message>.*)/  
  5. </parse> 

解析過后的日志為: 

  1.  
  2.   "thread" :"main",  
  3.   "level"  :"INFO",  
  4.   "message":"  Main - Start"  
  5.  
  6.  
  7.   "thread" :"main",  
  8.   "level"  :"ERROR",  
  9.   "message":" Main - Exception\njavax.management.RuntimeErrorException: null\n    at Main.main(Main.java:16) ~[bin/:na]"  
  10.  
  11.  
  12.   "thread" :"main",  
  13.   "level"  :"INFO",  
  14.   "message":"  Main - End"  

上面的多行解析配置中除了 format_firstline 指定多行日志的開始行匹配之外,還用到了 format1、format2…formatN 這樣的配置,其中 N 的范圍是 1...20,是多行日志的 Regexp 格式列表,為了便于配對,可以將 Regexp 模式分割成多個 regexpN 參數,將這些匹配模式連接起來構造出多行模式的正則匹配。

4Fluent Bit

Fluent Bit 的 tail input 插件也提供了處理多行日志的配置選項,比如現在我們還是來處理之前的 Python 多行日志: 

  1. 2019-08-01 18:58:05,898 ERROR:Exception on main handler  
  2. Traceback (most recent call last):  
  3.   File "python-logger.py", line 9, in make_log  
  4.     return word[13]  
  5. IndexError: string index out of range 

如果不用多行解析器 Fluent Bit 同樣會將每一行當成一條日志進行處理,我們可以配置使用 Fluent Bit 內置的 regex 解析器插件來結構化多行日志: 

  1. [PARSER]  
  2.      Name         log_date  
  3.      Format       regex  
  4.      Regex        /\d{4}-\d{1,2}-\d{1,2}/  
  5.  [PARSER]  
  6.      Name        log_attributes  
  7.      Format      regex  
  8.      Regex       /(?<timestamp>[^ ]* [^ ]*) (?<level>[^\s]+:)(?<message>[\s\S]*)/  
  9.   [INPUT]  
  10.      Name              tail  
  11.      tag               sample.tag  
  12.      path              /path/to/pythonApp.log  
  13.      Multiline         On  
  14.      Parser_Firstline  log_date  
  15.      Parser_1          log_attributes 

和 Fluentd 類似,Parser_Firstline 參數指定了與多行日志開頭相匹配的解析器的名稱,當然我們也可以包含額外的解析器來進一步結構化你的日志。這里我們配置了首先使用 Parser_Firstline 參數來匹配 ISO8601 日期開頭的日志行,然后使用 Parser_1 參數來指定匹配模式,以匹配日志消息的其余部分,并為它們分配了 timestamp、level、message 標簽。

最終轉換過后我們的日志變成了如下所示的格式: 

  1.  
  2.   "timestamp": "2019-08-01 19:22:14,196",  
  3.   "level": "ERROR:",  
  4.   "message": "Exception on main handler\nTraceback (most recent call last):\n  File \"python-logger.py\", line 9, in make_log\n    return word[13]\nIndexError: string index out of range" 
  5.  

 

責任編輯:龐桂玉 來源: 奇妙的Linux世界
相關推薦

2015-09-16 15:32:37

Android Tra內存管理

2022-01-04 13:54:57

應用程序IT監測

2011-09-07 15:52:01

EverNote筆記管理

2009-06-17 14:43:47

Spring框架Spring事務管理

2023-10-09 08:14:10

Helm管理應用

2012-02-23 11:02:06

惠普iOSAndroid

2021-11-09 10:21:14

微軟正優化Windows 11頁面

2024-12-18 12:10:00

2010-02-05 13:52:04

C++資源管理

2012-06-07 09:15:14

ibmdw

2022-06-02 10:02:47

Kubectl更新應用Linux

2017-12-19 10:03:44

JavaLinux代碼

2025-02-17 09:10:00

Ansible服務器日志

2024-03-11 00:01:00

PromtailLoki服務器

2021-11-17 10:25:28

loguru日志Python

2018-07-09 15:03:17

LinuxUnixSosreport

2021-01-28 14:53:19

PHP編碼開發

2023-05-04 07:37:44

KDEArianna

2009-03-04 06:28:00

windows2008服務器管理Windows服務器配

2021-08-17 10:43:57

WindowsiCloud更新
點贊
收藏

51CTO技術棧公眾號

国产精品人人做人人爽人人添| 99精品视频在线观看播放| 精品久久久久久久久久久久久久 | 高清在线一区二区| 一区二区免费看| 99精品视频在线观看| 亚洲国产精品一区二区久| 丰满人妻中伦妇伦精品app| 成人在线免费观看| 国产精品一区二区男女羞羞无遮挡| 91国产中文字幕| 国产一区第一页| 成人动漫视频| 欧美日本一区二区三区四区| 男女激情无遮挡| 麻豆91在线| 久久久久国产免费免费| www.成人av| 中文字幕av网站| 99在线|亚洲一区二区| 久久在线视频在线| 天天躁日日躁aaaa视频| 国产精品视频3p| 69成人精品免费视频| 国产淫片av片久久久久久| 青草在线视频| 亚洲欧洲日韩综合一区二区| 欧美日韩最好看的视频| 欧美一级性视频| 国产一区二区在线观看免费| 国产精品jvid在线观看蜜臀| 国产精品99无码一区二区| 91精品国产自产在线观看永久∴| 一区二区三区四区精品| 欧美bbbbb性bbbbb视频| 国产精品久久久久av蜜臀 | 国产农村妇女毛片精品| 视频一区中文字幕国产| 97激碰免费视频| 日韩在线观看视频免费| 久久久久久久久久久久久久国产| 国产探花视频在线观看| 亚洲欧美区自拍先锋| 亚洲欧美日韩另类精品一区二区三区| 牛牛影视精品影视| 久久五月婷婷丁香社区| 看高清中日韩色视频| 污污网站在线免费观看| 99国产精品久久久| 久久久久久一区| 五月激情丁香婷婷| 91蜜桃在线观看| 免费成人av网站| 精品99又大又爽又硬少妇毛片| 久久综合久色欧美综合狠狠| 久久99精品久久久久子伦 | 亚洲欧美激情在线视频| 人妻丰满熟妇av无码久久洗澡| 国产精品一区二区三区美女| 亚洲福利视频久久| 欧美精品欧美极品欧美激情| 亚洲第一福利专区| 亚洲一级一级97网| 99久久久无码国产精品不卡| 一区二区影院| 欧美黑人性生活视频| 日韩欧美大片在线观看| 性感少妇一区| 国产精品亚洲综合天堂夜夜| 国产免费的av| 成人精品在线视频观看| 欧美日韩大片一区二区三区| 国产精品麻豆一区二区三区| 亚洲国产精品成人综合| 亚洲自拍偷拍一区二区三区| 免费不卡av| 精品人伦一区二区三区蜜桃免费| 男女视频一区二区三区| 亚洲精品自拍| 亚洲成年人影院在线| 国产一区二区黄| 777视频在线| 日韩成人在线看| 日韩精品亚洲视频| 911国产在线| 亚洲成人原创| 国产精品在线看| 囯产精品一品二区三区| 久久精品水蜜桃av综合天堂| 老汉色影院首页| 日韩在线伦理| 在线不卡一区二区| 水蜜桃av无码| 99re6这里只有精品| 久久人人爽人人爽人人片av高请| 免费视频久久久| 国产原创一区二区三区| 玛丽玛丽电影原版免费观看1977 | 国产又粗又猛视频免费| 福利一区二区在线| 香蕉久久免费影视| 国产精选在线| 7777精品伊人久久久大香线蕉的| 亚洲一区二区三区综合| 欧美一区不卡| 国产精品青青在线观看爽香蕉| 狠狠躁夜夜躁av无码中文幕| 中文乱码免费一区二区| 鲁一鲁一鲁一鲁一色| 亚洲国产伊人| 亚洲香蕉成人av网站在线观看| 亚洲国产精品久| 日韩av在线发布| 国偷自产av一区二区三区小尤奈| 激情视频在线观看| 欧美中文字幕一二三区视频| 强迫凌虐淫辱の牝奴在线观看| 五月天综合网站| 国产mv免费观看入口亚洲| 国精产品乱码一区一区三区四区| 国产精品电影一区二区| 日韩av播放器| 日韩动漫一区| 韩国视频理论视频久久| 久久久久久久久久久久久久一区 | 亚洲国产精品国自产拍av秋霞| 国产精品18在线| 久久精品麻豆| 国产一区二区中文字幕免费看| 成人日批视频| 欧美日韩一级二级| 日韩毛片无码永久免费看| 国产亚洲一级| 精品九九九九| 在线观看特色大片免费视频| 亚洲电影天堂av| 久久精品亚洲无码| 国产a区久久久| 久久国产精品免费观看| 在线观看亚洲精品福利片| 一本大道久久加勒比香蕉| 日韩欧美在线观看免费| 91麻豆国产在线观看| 国产精品一线二线三线| av一级亚洲| 国模精品视频一区二区| 日本xxxxwww| 欧美日韩加勒比精品一区| 中文字幕无码人妻少妇免费| 国产人成精品一区二区三| 久久99精品久久久久久水蜜桃| 老色鬼在线视频| 亚洲精品久久久久久久久| 国产超碰人人爽人人做人人爱| www.欧美日韩| 欧美 国产 小说 另类| 国内精品久久久久久99蜜桃| 国产精品九九九| 日本免费中文字幕在线| 欧美一级搡bbbb搡bbbb| 久久网一区二区| 99精品欧美一区| 北条麻妃av高潮尖叫在线观看| 欧美丝袜激情| 91色精品视频在线| 欧美三级电影一区二区三区| 欧美一区二区在线视频| 国产在线一二区| 久久综合九色综合97婷婷| 欧美日韩国产页| 亚洲熟女乱色一区二区三区| 久久不见久久见国语| 国产精品视频一区二区三区四| 麻豆视频在线观看免费| 精品久久一区二区| 亚洲天堂av片| 国产精品污网站| 在线播放av网址| 快she精品国产999| 国产精品夜夜夜爽张柏芝| 超碰成人97| 国产精品69av| 手机电影在线观看| 亚洲精品中文字幕有码专区| 136福利视频导航| 亚洲国产精品久久不卡毛片| 欧美另类z0zx974| 国产美女视频一区| 欧美日韩第二页| 久久久久久久久久久久久久| 国产综合动作在线观看| 国产精品videossex撒尿| 久久久久久一区二区三区| 国产黄色片在线播放| 日韩欧美国产1| 天天综合久久综合| 亚洲一区二区三区美女| 亚洲精品成人av久久| 成人爽a毛片一区二区免费| 一道本视频在线观看| 一本不卡影院| 国产成人精品免费看在线播放| 香蕉久久精品日日躁夜夜躁| 97久草视频| 国内自拍亚洲| 欧美自拍大量在线观看| 在线观看小视频| 最新亚洲国产精品| 日韩欧美在线番号| 精品精品国产高清a毛片牛牛| 国产乡下妇女三片| 天天色综合天天| 久久高清无码视频| 国产精品成人一区二区艾草| 青青草视频成人| 99视频一区二区| 日本人dh亚洲人ⅹxx| 久久激情五月激情| 日av中文字幕| 国产亚洲激情| 僵尸世界大战2 在线播放| 制服丝袜专区在线| 久久综合久久久久88| 小日子的在线观看免费第8集| 日韩精品三区四区| av动漫在线看| 在线观看视频免费一区二区三区| 国产又粗又长又爽视频| 久久看人人摘| 日韩精品在在线一区二区中文| 秋霞综合在线视频| 国产中文一区二区| 国产厕拍一区| 国产欧美综合精品一区二区| 伊人精品综合| 国产激情一区二区三区在线观看| 亚洲欧美在线人成swag| 国产精品视频在线观看| 成人亚洲网站| 国产欧美中文字幕| 香蕉久久一区| 成人国内精品久久久久一区| 久久爱.com| 成人网在线观看| 一区二区三区| 91久久精品一区二区别| av成人app永久免费| 国产日本一区二区三区| 日韩极品少妇| 日本一区二区高清视频| 国产精品片aa在线观看| 色999五月色| 日韩精品一区二区三区免费观看| 亚洲va韩国va欧美va精四季| 久久国产亚洲精品| a级网站在线观看| 午夜精品久久| 男人日女人视频网站| 日韩天天综合| aaaaaa亚洲| 精品亚洲成a人在线观看| 992kp免费看片| 粉嫩av一区二区三区| 人体私拍套图hdxxxx| 94色蜜桃网一区二区三区| jizz中文字幕| 综合久久久久久| 日韩黄色三级视频| 欧洲精品在线观看| 国产女18毛片多18精品| 欧美不卡一区二区| 美丽的姑娘在线观看免费动漫| 在线a欧美视频| av片在线观看永久免费| 久久欧美在线电影| 成人在线视频观看| 99热国产免费| 国产精品午夜一区二区三区| 中文字幕一区二区三区精彩视频| 欧美xxxx精品| 亚洲日本一区二区| 日韩视频免费观看高清| 欧美日韩一卡二卡三卡| 后进极品白嫩翘臀在线视频| 永久免费毛片在线播放不卡| av官网在线播放| 日本国产欧美一区二区三区| 四虎精品永久免费| 九色综合婷婷综合| 午夜精品一区二区三区国产| 怡红院av亚洲一区二区三区h| 蜜桃av一区二区| 国产真实乱人偷精品| 国产精品久久久久久久久久久免费看| 久久亚洲成人av| 欧美性生活大片视频| 丰满少妇被猛烈进入| 日韩在线观看成人| av影院在线| 国产欧美日韩最新| 天堂在线精品| 东北少妇不带套对白| 久久99精品国产麻豆不卡| 亚洲色图14p| 一区二区国产盗摄色噜噜| 精品一区二三区| 亚洲精品成人久久| 先锋成人av| 91精品国产综合久久香蕉最新版 | 另类图片第一页| 小说区视频区图片区| 日韩精品一区第一页| 国产成人无码一区二区在线观看| 一区二区三区四区精品在线视频 | 二吊插入一穴一区二区| 国产精品视频在线免费观看| 911精品美国片911久久久| 成人一区二区三| 99re这里都是精品| 久久久一二三区| 日韩一级高清毛片| 色综合久久影院| 国产精品视频一| 成人精品电影| 成人一区二区三| 久久久久久久久久久久久夜| 中文字幕亚洲精品在线| 精品播放一区二区| 日韩影视在线| 91日韩久久| 欧美日韩国产一区精品一区| 91aaa精品| 国产精品不卡一区| 一区二区三区播放| 色婷婷综合久久久久中文字幕1| 88xx成人网| 国产视频精品在线| 亚洲天堂网av在线| 色综合激情久久| 国产乱子伦三级在线播放| 日本成人激情视频| 一本色道久久综合亚洲精品酒店| 精品欧美一区免费观看α√| 99精品一区二区| 无码人妻丰满熟妇区bbbbxxxx | 亚洲av成人无码一二三在线观看| 亚瑟在线精品视频| 天天操天天干天天| 热草久综合在线| 久久不见久久见国语| 一区二区三区网址| 国产精品免费视频观看| 国产精品无码一区二区桃花视频| 色婷婷综合成人| 亚洲欧美日本国产| 国产免费黄视频| 久久久久久**毛片大全| 在线观看国产精品入口男同| 久久国内精品一国内精品| 91成人在线网站| 国产精品一色哟哟| 99精品视频在线播放观看| 久久人人爽人人爽人人片av免费| 色偷偷偷亚洲综合网另类| 日本一区二区三区电影免费观看| 国产精品一线二线三线| 久久久久久久综合日本| 91精东传媒理伦片在线观看| 精品少妇v888av| 日本成人7777| 高清av免费看| 亚洲电影在线播放| 国内在线免费高清视频| 91精品视频播放| 99成人精品| 日韩一区二区三区四区视频| 日韩欧美电影一区| xx欧美xxx| 樱空桃在线播放| 99国产精品久久久| 一区二区三区精彩视频| 97精品免费视频| 99精品美女| 欧美成人午夜精品免费| 3d动漫精品啪啪一区二区竹菊| 国内小视频在线看| 午夜老司机精品| 丁香五精品蜜臀久久久久99网站| 波多野结衣 久久| 色在人av网站天堂精品| 国产精品嫩模av在线| 潘金莲一级淫片aaaaa| 91国内精品野花午夜精品| 羞羞视频在线观看免费| 先锋影音日韩| 99精品国产91久久久久久 | 国产情侣一区二区三区| 国产午夜大地久久| 中文字幕一区二区三| 免费动漫网站在线观看|