精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

激情小说中文字幕| 欧美国产在线一区| 最新av网站在线观看| 激情综合色播激情啊| 欧美激情一区二区三区高清视频| 艳妇乳肉亭妇荡乳av| 成人av色网站| 亚洲一区二区精品3399| 日韩精品欧美专区| 亚洲av无码乱码国产精品| 久久久久久穴| 欧美黑人国产人伦爽爽爽| www在线观看免费视频| 精品一区二区三区视频在线播放 | 日韩专区欧美专区| 欧美成人网在线| 99久久人妻无码精品系列| 日韩精品视频中文字幕| 91搞黄在线观看| 日韩av新片网| 乱人伦中文视频在线| 99国产精品久久久久久久久久 | 国产福利资源一区| 欧美日韩综合色| 国产成人精品视频免费看| 成人在线观看免费网站| 国产免费久久精品| 久久久精品国产一区二区三区| 97视频免费在线| 日韩国产欧美三级| 5566日本婷婷色中文字幕97| 久草网视频在线观看| 欧美h版在线| 一区二区三区天堂av| av黄色一级片| 成人性生交大片免费看96| 欧美日韩国产区一| 免费看黄色一级大片| 日本不卡1234视频| 一区二区三区加勒比av| 成年人三级视频| 香蕉视频国产在线观看| 国产欧美日韩综合| 欧美日韩精品综合| 日av在线播放| 久久午夜老司机| 久久久久资源| 三级av在线| 99re在线精品| 久久精品人成| 五月婷婷狠狠干| av动漫一区二区| 韩日午夜在线资源一区二区| 色屁屁草草影院ccyycom| 高清不卡在线观看av| 亚洲在线视频福利| 亚洲精品成人区在线观看| 国产成人av网站| 成人区精品一区二区| 丰满人妻一区二区三区免费视频| 国产精品综合一区二区| 91精品国产综合久久香蕉| 91精品国产综合久| 国产呦萝稀缺另类资源| 96精品久久久久中文字幕| 国产普通话bbwbbwbbw| 国产精品一区二区x88av| 97se亚洲综合在线| 天天色天天操天天射| 91色九色蝌蚪| 午夜精品美女久久久久av福利| 香蕉视频国产在线观看| 一区二区三区久久久| 久久成人免费观看| 日韩毛片在线| 欧美一区二区在线看| 亚洲精品鲁一鲁一区二区三区 | 免费观看国产成人| eeuss影院www在线观看| 亚洲品质自拍视频| 欧美激情 国产精品| 成人免费福利| 91麻豆精品国产91久久久使用方法| 国产3p在线播放| 538任你躁精品视频网免费| 日韩精品极品视频| 国产不卡在线观看视频| 欧美涩涩网站| 国产成人久久精品| 国产99999| 久久这里只有精品首页| 懂色av粉嫩av蜜臀av| 在线毛片观看| 欧美一级片免费看| 精品人妻一区二区三区视频| 999久久久国产精品| 韩日欧美一区二区| 一级片在线免费观看视频| 大桥未久av一区二区三区中文| 人偷久久久久久久偷女厕| 成人日韩欧美| 色诱视频网站一区| 久久人妻少妇嫩草av蜜桃| 国模吧精品视频| 欧美激情视频在线| 特级西西444www高清大视频| 成人黄色a**站在线观看| 日韩欧美一区二区三区久久婷婷| 污污网站在线观看| 欧美日韩性生活| 中文字幕 亚洲一区| 久久久久国产精品| 国产ts人妖一区二区三区| 99热精品在线播放| 亚洲国产精品传媒在线观看| 人人干视频在线| 99久久久成人国产精品| 亚洲精品小视频| 精品少妇久久久| 狠狠色丁香久久婷婷综合_中| 欧美精品久久久| bl视频在线免费观看| 欧美日韩精品三区| 国产精品天天干| 国产美女一区| 国语精品中文字幕| 色爱综合区网| 日韩一区二区视频| 永久久久久久久| 久国产精品韩国三级视频| 欧美日韩亚洲在线 | 亚洲大全视频| 国产精品一区二区三区成人| 天堂中文在线资| 亚洲国产日韩一区二区| 久久久久无码精品| 91精品国产调教在线观看| 国产精品久久久久影院日本| 精品推荐蜜桃传媒| 色综合视频一区二区三区高清| 欧美69精品久久久久久不卡| 欧美1区免费| 成人免费淫片视频软件| 思思99re6国产在线播放| 欧美日韩免费一区二区三区| 熟女少妇内射日韩亚洲| 日韩福利电影在线观看| 欧美重口乱码一区二区| 日韩另类视频| 中日韩美女免费视频网站在线观看 | 国产精品www色诱视频| 久久免费看视频| 色综合久久久久综合体| 欧美日韩高清丝袜| 日韩国产精品大片| 手机看片福利永久国产日韩| 精品176极品一区| 久久国产精品久久精品| 精品国产乱码久久久久久蜜臀网站| 亚洲免费在线视频| 亚洲美女精品视频| 国产一区二区三区的电影| 蜜桃网站成人| 青青在线精品| 欧美大片免费看| 黄色成人一级片| 欧美日韩免费网站| mm131丰满少妇人体欣赏图| 免费在线观看日韩欧美| 五月天在线免费视频| 国产精品宾馆| 国产福利精品在线| 97视频精彩视频在线观看| 欧美卡1卡2卡| 久久久久久久久久久网| 91亚洲国产成人精品一区二区三| 妞干网在线免费视频| 成人羞羞动漫| 亚洲va电影大全| 欧美gv在线观看| 中文字幕亚洲一区| 亚洲精品国产手机| 91国在线观看| 性欧美videos| 26uuu精品一区二区| 91看片在线免费观看| 黄色成人精品网站| 视频一区不卡| www.爱久久| 国产97在线|日韩| 日韩毛片久久久| 亚洲电影成人av99爱色| 国产亚洲欧美在线精品| 一区二区三区美女| 第一次破处视频| 成人精品国产免费网站| 欧美特级aaa| 亚洲每日更新| 懂色av粉嫩av蜜臀av| 五月综合久久| 91网站在线看| 亚洲精品555| 亚洲**2019国产| 免费大片黄在线观看视频网站| 亚洲国产日韩一区| 国产农村妇女aaaaa视频| 亚洲视频在线一区| 波多野结衣av在线免费观看| 国产精品一区二区果冻传媒| 久久久久国产精品熟女影院| 影音先锋久久资源网| 国产精品av免费| 国产探花在线精品| 国产一区免费在线观看| 免费一级欧美片在线观看网站| 国产精品久久久久久久久久东京 | 国产制服丝袜在线| 国产一区不卡在线| 久热精品在线观看视频| 久久在线精品| 日韩精品―中文字幕| 欧美久久影院| 亚洲成年人专区| 久久国产精品亚洲人一区二区三区| 久久伊人一区二区| 成人高潮视频| 高清视频一区| 麻豆国产精品| 3d精品h动漫啪啪一区二区 | 亚洲欧美久久久| 全黄性性激高免费视频| 好看的日韩av电影| 在线观看污视频| 68国产成人综合久久精品| 先锋在线资源一区二区三区| 国产精品亚洲人成在99www| 久久精品99久久| 女同久久另类99精品国产| 国产精品久久久久免费| 在线观看视频一区二区三区| 97久草视频| 亚洲网一区二区三区| 99re在线国产| 日韩精品一区二区三区中文| 99国产视频在线| 97视频一区| 国产综合av一区二区三区| 九色丨蝌蚪丨成人| 国产一区二区黄色| 免费萌白酱国产一区二区三区| 国产专区一区二区| 欧美人妖视频| 欧美精品欧美精品| 欧美日韩国产高清电影| 亚洲成色www久久网站| 91中文字幕精品永久在线| 中文字幕日韩精品一区二区| 五月久久久综合一区二区小说| 亚洲欧洲精品一区二区| 99久久久久国产精品| 国产激情在线看| 亚洲狼人精品一区二区三区| 色综合av综合无码综合网站| 日韩av网站在线观看| 亚洲三级在线观看视频| 国产成人av影院| 性欧美丰满熟妇xxxx性仙踪林| 久久九九久久九九| 国内毛片毛片毛片毛片毛片| 一区二区三区在线观看视频| 亚洲国产精品成人无久久精品| 第一福利永久视频精品| 成人黄色三级视频| 日韩免费观看高清完整版 | 日韩精品一区二区三区中文字幕 | 国产精品久久久久免费a∨大胸| 久久亚洲资源中文字| αv一区二区三区| 蜜臀91精品国产高清在线观看| 亚洲欧美日韩精品在线| 欧美日韩一视频区二区| 日本三级免费网站| 久久99精品一区二区三区| av漫画在线观看| 国产日韩精品一区| 久久机热这里只有精品| 91成人免费电影| www三级免费| 一夜七次郎国产精品亚洲| 亚洲羞羞网站| 国产极品jizzhd欧美| 秋霞影院一区| 日韩欧美亚洲日产国产| 黄色av一区| 超碰人人草人人| 91免费国产在线| 99热精品免费| 欧美三级在线视频| 天堂网在线资源| 免费成人高清视频| 午夜日韩成人影院| 国产精品久久久久久久久久直播| 精品一区不卡| 成人网站免费观看入口| 捆绑紧缚一区二区三区视频 | 国产精品欧美一区二区三区| 精品无码久久久久久久| 欧美日韩成人高清| 青青草视频在线免费观看| 欧美噜噜久久久xxx| 深夜视频一区二区| 老牛影视免费一区二区| 欧美激情四色| 黄色小视频免费网站| 久久网站最新地址| 日韩手机在线观看| 日韩一级成人av| 婷婷视频在线| 国产精品久久久久9999| 日韩最新在线| 3d动漫一区二区三区| 国产成人综合亚洲91猫咪| 国产视频精品免费| 欧美天堂一区二区三区| 极品美乳网红视频免费在线观看| 午夜欧美大片免费观看| 色妞ww精品视频7777| 在线观看国产一区| 日本成人中文字幕| 无码人妻aⅴ一区二区三区 | 国产午夜亚洲精品午夜鲁丝片| 日本三级午夜理伦三级三| 日韩片之四级片| av免费在线观看网站| 成人精品在线观看| 91影院成人| 交换做爰国语对白| 亚洲视频在线一区| a级片在线免费看| 久久国产精品首页| 国产精品一区二区三区四区在线观看| 色女孩综合网| 日本欧美加勒比视频| 天堂在线中文视频| 欧美午夜精品久久久久久超碰| 国产69久久| 国产精品夜间视频香蕉| 天天久久综合| 性一交一黄一片| 性感美女极品91精品| 天堂a中文在线| 日本国产一区二区三区| 国产精品免费大片| 黄色国产小视频| 国产精品久久久久aaaa樱花| 国产精品久久影视| 久久天堂电影网| 91精品啪在线观看国产爱臀| 霍思燕三级露全乳照| 91亚洲国产成人精品一区二区三| 亚洲综合图片网| 色婷婷综合久久久久中文字幕1| 日日夜夜亚洲精品| 国产成人一二三区| 99久久免费精品| 最新中文字幕在线观看视频| xvideos亚洲| 国产成人福利av| 少妇性l交大片| ●精品国产综合乱码久久久久| www.com在线观看| 欧美一级高清免费播放| 欧美超碰在线| 亚洲国产精品第一页| 色婷婷精品大在线视频| 男人天堂久久久| 国产精品视频免费观看| 久久久亚洲一区| 国产精品视频一区二区三| 精品久久久久一区| 欧美va视频| 免费日韩在线观看| 久久亚洲精品国产精品紫薇| 国产理论视频在线观看| 91国内揄拍国内精品对白| 日韩av在线中文字幕| 稀缺呦国内精品呦| 欧美亚洲图片小说| 成人性生交大片免费看在线播放| 欧美色图亚洲自拍| 粉嫩aⅴ一区二区三区四区五区| 成年人av网站| 欧美激情国产高清| 精品国产精品久久一区免费式| 操人视频免费看| 色综合一个色综合亚洲| 午夜成年人在线免费视频| 日本视频精品一区| 成人深夜福利app| 伊人网站在线观看|