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

Golang 語言的標準庫 log 包怎么使用?

開發(fā) 前端
Golang 語言的標準庫中提供了一個簡單的 log 日志包,它不僅提供了很多函數(shù),還定義了一個包含很多方法的類型 Logger。但是它也有缺點,比如不支持區(qū)分日志級別,不支持日志文件切割等。

01、介紹

Golang 語言的標準庫中提供了一個簡單的 log 日志包,它不僅提供了很多函數(shù),還定義了一個包含很多方法的類型 Logger。但是它也有缺點,比如不支持區(qū)分日志級別,不支持日志文件切割等。

[[379196]]

02、函數(shù)

Golang 的 log 包主要提供了以下幾個具備輸出功能的函數(shù):

 

  1. func Fatal(v ...interface{})  
  2. func Fatalf(format string, v ...interface{})  
  3. func Fatalln(v ...interface{})  
  4. func Panic(v ...interface{})  
  5. func Panicf(format string, v ...interface{})  
  6. func Panicln(v ...interface{})  
  7. func Print(v ...interface{})  
  8. func Printf(format string, v ...interface{})  
  9. func Println(v ...interface{}) 

這些函數(shù)的使用方法和 fmt 包完全相同,通過查看源碼可以發(fā)現(xiàn),F(xiàn)atal[ln|f] 和 Panic[ln|f] 實際上是調(diào)用的 Print[ln|f],而 Print[ln|f] 實際上是調(diào)用的 Output() 函數(shù)。

其中 Fatal[ln|f] 是調(diào)用 Print[ln|f] 之后,又調(diào)用了 os.Exit(1) 退出程序。

其中 Panic[ln|f] 是調(diào)用 Panic[ln|f] 之后,又調(diào)用了 panic() 函數(shù),拋出一個恐慌。

所以,我們很有必要閱讀一下 Output() 函數(shù)的源碼。

函數(shù) Output() 的源碼:

  1. func (l *Logger) Output(calldepth int, s string) error { 
  2.  now := time.Now() // get this early. 
  3.  var file string 
  4.  var line int 
  5.  l.mu.Lock() 
  6.  defer l.mu.Unlock() 
  7.  if l.flag&(Lshortfile|Llongfile) != 0 { 
  8.   // Release lock while getting caller info - it's expensive. 
  9.   l.mu.Unlock() 
  10.   var ok bool 
  11.   _, file, line, ok = runtime.Caller(calldepth) 
  12.   if !ok { 
  13.    file = "???" 
  14.    line = 0 
  15.   } 
  16.   l.mu.Lock() 
  17.  } 
  18.  l.buf = l.buf[:0] 
  19.  l.formatHeader(&l.buf, now, file, line) 
  20.  l.buf = append(l.buf, s...) 
  21.  if len(s) == 0 || s[len(s)-1] != '\n' { 
  22.   l.buf = append(l.buf, '\n'
  23.  } 
  24.  _, err := l.out.Write(l.buf) 
  25.  return err 

通過閱讀 Output() 函數(shù)的源碼,可以發(fā)現(xiàn)使用互斥鎖來保證多個 goroutine 寫日志的安全,并且在調(diào)用 runtime.Caller() 函數(shù)之前,先釋放互斥鎖,獲取到信息后再加上互斥鎖來保證安全。

使用 formatHeader() 函數(shù)來格式化日志的信息,然后保存到 buf 中,然后再把日志信息追加到 buf 的末尾,然后再通過判斷,查看日志是否為空或末尾不是 \n,如果是就再把 \n 追加到 buf 的末尾,最后將日志信息輸出。

函數(shù) Output() 的源碼也比較簡單,其中最值得注意的是 runtime.Caller() 函數(shù),源碼如下:

  1. func Caller(skip int) (pc uintptr, file string, line int, ok bool) { 
  2.  rpc := make([]uintptr, 1) 
  3.  n := callers(skip+1, rpc[:]) 
  4.  if n < 1 { 
  5.   return 
  6.  } 
  7.  frame, _ := CallersFrames(rpc).Next() 
  8.  return frame.PC, frame.File, frame.Line, frame.PC != 0 

通過閱讀 runtime.Caller() 函數(shù)的源碼,可以發(fā)現(xiàn)它接收一個 int 類型的參數(shù) skip,該參數(shù)表示跳過棧幀數(shù),log 包中的輸出功能的函數(shù),使用的默認值都是 2,原因是什么?

舉例說明,比如在 main 函數(shù)中調(diào)用 log.Print,方法調(diào)用棧為 main->log.Print->*Logger.Output->runtime.Caller,所以此時參數(shù) skip 的值為 2,表示 main 函數(shù)中調(diào)用 log.Print 的源文件和代碼行號;

參數(shù)值為 1,表示 log.Print 函數(shù)中調(diào)用 *Logger.Output 的源文件和代碼行號;參數(shù)值為 0,表示 *Logger.Output 函數(shù)中調(diào)用 runtime.Caller 的源文件和代碼行號。

至此,我們發(fā)現(xiàn) log 包的輸出功能的函數(shù),全部都是把信息輸出到控制臺,那么該怎么將信息輸出到文件中呢?

函數(shù) SetOutPut 就是用來設(shè)置輸出目標的,源碼如下:

  1. func SetOutput(w io.Writer) { 
  2.  std.mu.Lock() 
  3.  defer std.mu.Unlock() 
  4.  std.out = w 

我們可以通過函數(shù) os.OpenFile 來打開一個用于 I/O 的文件,返回值作為函數(shù) SetOutput 的參數(shù)。

除此之外,讀者應(yīng)該還發(fā)現(xiàn)了一個問題,輸出信息都是以日期和時間開頭,我們該怎么記錄更加豐富的信息呢?比如源文件和行號。

這就用到了函數(shù) SetFlags,它可以設(shè)置輸出的格式,源碼如下:

  1. func SetFlags(flag int) { 
  2.  std.SetFlags(flag) 

參數(shù) flag 的值可以是以下任意常量:

  1. const ( 
  2.  Ldate         = 1 << iota     // the date in the local time zone: 2009/01/23 
  3.  Ltime                         // the time in the local time zone: 01:23:23 
  4.  Lmicroseconds                 // microsecond resolution: 01:23:23.123123.  assumes Ltime. 
  5.  Llongfile                     // full file name and line number: /a/b/c/d.go:23 
  6.  Lshortfile                    // final file name element and line number: d.go:23. overrides Llongfile 
  7.  LUTC                          // if Ldate or Ltime is set, use UTC rather than the local time zone 
  8.  Lmsgprefix                    // move the "prefix" from the beginning of the line to before the message 
  9.  LstdFlags     = Ldate | Ltime // initial values for the standard logger 

其中 Ldate、Ltime 和 Lmicroseconds 分別表示日期、時間和微秒,需要注意的是,如果設(shè)置 Lmicroseconds,那么設(shè)置 Ltime,也不會生效。

其中 Llongfile 和 Lshortfile 分別代碼絕對路徑、源文件名、行號,和代碼相對路徑、源文件名、行號,需要注意的是,如果設(shè)置 Lshortfile,那么即使設(shè)置 Llongfile,也不會生效。

其中 LUTC 表示設(shè)置時區(qū)為 UTC 時區(qū)。

其中 LstdFlags 表示標準記錄器的初始值,包含日期和時間。

截止到現(xiàn)在,還缺少點東西,就是日志信息的前綴,比如我們需要區(qū)分日志信息為 DEBUG、INFO 和 ERROR。是的,我們還有一個函數(shù) SetPrefix 可以實現(xiàn)此功能,源碼如下:

  1. func SetPrefix(prefix string) { 
  2.  std.SetPrefix(prefix) 

函數(shù) SetPrefix 接收一個 string 類型的參數(shù),用來設(shè)置日志信息的前綴。

03、Logger

log 包定義了一個包含很多方法的類型 Logger。我們通過查看輸出功能的函數(shù),發(fā)現(xiàn)它們都是調(diào)用 std.Output,std 是什么?我們查看 log 包的源碼。

  1. type Logger struct { 
  2.  mu     sync.Mutex // ensures atomic writes; protects the following fields 
  3.  prefix string     // prefix on each line to identify the logger (but see Lmsgprefix) 
  4.  flag   int        // properties 
  5.  out    io.Writer  // destination for output 
  6.  buf    []byte     // for accumulating text to write 
  7.  
  8. func New(out io.Writer, prefix string, flag int) *Logger { 
  9.  return &Logger{outout, prefix: prefix, flag: flag} 
  10.  
  11. var std = New(os.Stderr, "", LstdFlags) 

通過閱讀源碼,我們發(fā)現(xiàn) std 實際上是 Logger 類型的一個實例,Output 是 Logger 的一個方法。

std 通過 New 函數(shù)創(chuàng)建,參數(shù)分別是 os.Stderr、空字符串和 LstdFlags,分別表示標準錯誤輸出、空字符串前綴和日期時間。

Logger 類型的字段,注釋已經(jīng)說明了,這里就不再贅述了。

自定義 Logger:

  1. func main () { 
  2.  logFile, err := os.OpenFile("error1.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0755) 
  3.  if err != nil { 
  4.   fmt.Println(err) 
  5.   return 
  6.  } 
  7.  defer logFile.Close() 
  8.  logs := DefinesLogger(logFile, "", log.LstdFlags|log.Lshortfile) 
  9.  logs.Debug("message"
  10.  logs.Debugf("%s""content"
  11.  
  12. // 自定義 logger 
  13. type Logger struct { 
  14.  definesLogger *log.Logger 
  15.  
  16. type Level int8 
  17.  
  18. const( 
  19.  LevelDebug Level = iota 
  20.  LevelInfo 
  21.  LevelError 
  22.  
  23. func (l Level) String() string { 
  24.  switch l { 
  25.  case LevelDebug: 
  26.   return " [debug] " 
  27.  case LevelInfo: 
  28.   return " [info] " 
  29.  case LevelError: 
  30.   return " [error] " 
  31.  } 
  32.  return "" 
  33.  
  34. func DefinesLogger(w io.Writer, prefix string, flag int) *Logger { 
  35.  l := log.New(w, prefix, flag) 
  36.  return &Logger{definesLogger: l} 
  37.  
  38. func (l *Logger) Debug(v ...interface{}) { 
  39.  l.definesLogger.Print(LevelDebug, fmt.Sprint(v...)) 
  40.  
  41. func (l *Logger) Debugf(format string, v ...interface{}) { 
  42.  l.definesLogger.Print(LevelDebug, fmt.Sprintf(format, v...)) 
  43.  
  44. func (l *Logger) Info(v ...interface{}) { 
  45.  l.definesLogger.Print(LevelInfo, fmt.Sprint(v...)) 
  46.  
  47. func (l *Logger) Infof(format string, v ...interface{}) { 
  48.  l.definesLogger.Print(LevelInfo, fmt.Sprintf(format, v...)) 
  49.  
  50. func (l *Logger) Error(v ...interface{}) { 
  51.  l.definesLogger.Print(LevelError, fmt.Sprint(v...)) 
  52.  
  53. func (l *Logger) Errorf(format string, v ...interface{}) { 
  54.  l.definesLogger.Print(LevelError, fmt.Sprintf(format, v...)) 

04、總結(jié)

本文主要介紹 Golang 語言的標準庫中的 log 包,包括 log 包的函數(shù)和自定義類型 logger 的使用方法和一些細節(jié)上的注意事項。開篇也提到了,log 包不支持日志文件的切割,我們需要自己編碼去實現(xiàn),或者使用三方庫,比如 lumberjack。在生產(chǎn)環(huán)境中,一般比較少用 log 包來記錄日志,通常會使用三方庫來記錄日志,比如 zap 和 logrus 等。

責(zé)任編輯:未麗燕 來源: Golang語言開發(fā)棧
相關(guān)推薦

2021-09-13 05:02:49

GogRPC語言

2021-06-07 23:19:44

Golang語言 Defer

2021-07-12 05:05:59

Golang語言字段

2021-06-09 23:36:46

Golang語言版本

2021-04-28 09:02:48

Golang語言Context

2021-10-10 23:02:49

Golang語言代碼

2024-06-19 10:31:48

2021-12-13 01:24:14

語言Golang panic

2021-06-29 23:40:19

Golang語言并發(fā)

2020-10-22 06:59:09

GolangRust語言

2023-04-02 23:13:07

Go語言bufio

2023-02-13 00:24:37

Go語言日志庫

2022-01-04 23:13:57

語言PanicGolang

2021-11-08 23:09:07

Go排序數(shù)據(jù)

2023-11-13 21:55:12

Go編程

2021-07-26 11:19:43

微服務(wù)開發(fā)技術(shù)

2021-11-14 23:05:28

GoCast語言

2009-12-15 17:53:18

Ruby標準庫

2021-10-31 23:01:50

語言拼接字符串

2021-11-28 23:06:30

語言編程接口
點贊
收藏

51CTO技術(shù)棧公眾號

日韩美女主播视频| 欧美mv和日韩mv国产网站| 亚洲欧美久久234| 91禁在线观看| 国产一区二区三区四区三区四| 精品国产一区二区精华 | 国产午夜久久| 在线观看国产精品91| 亚洲天堂av一区二区三区| 国产第一页在线视频| 久久久午夜电影| 亚洲最大的免费| 羞羞影院体验区| 91精品久久久久久久蜜月| 亚洲国产欧美一区二区三区同亚洲| www.亚洲天堂网| 怡红院在线播放| 久久久久久久久久电影| 97伦理在线四区| 中文字幕av网站| 亚洲青涩在线| 久久天天躁狠狠躁夜夜躁2014 | 老司机精品视频在线播放| 欧美日韩精品一区二区在线播放| 国产曰肥老太婆无遮挡| 麻豆tv免费在线观看| 91蝌蚪porny九色| 成人在线视频网址| 亚洲一区中文字幕在线| 欧美资源在线| 久久久最新网址| 亚洲aaa视频| 九九精品在线| 亚洲精品www久久久| gogo亚洲国模私拍人体| 九九久久国产| 日本高清不卡视频| 精品这里只有精品| a级片在线免费| 亚洲免费观看高清完整版在线观看熊| 日韩在线电影一区| 青青草手机在线| 99精品视频一区| 国产超碰91| 国精产品乱码一区一区三区四区| 国产一区二区三区蝌蚪| 国产日韩在线一区| 中文字幕一区二区三区四区免费看| 中文一区二区| 欧美亚州一区二区三区| 欧美亚韩一区二区三区| 伊人成人在线视频| 欧美国产日韩精品| 欧美日韩一级大片| 欧美激情一区| 欧美激情一区二区三级高清视频| 劲爆欧美第一页| 欧美日韩1区| 久久久久久久久久久免费| 欧美色图亚洲天堂| 激情偷拍久久| 91国产高清在线| www.日本精品| 丝袜亚洲另类欧美综合| 国产精品人成电影在线观看| 亚洲图片欧美日韩| 强制捆绑调教一区二区| 国产精品香蕉av| 91精品国产乱码久久久久| 久久er精品视频| 91久久在线视频| 精品久久无码中文字幕| 成人av资源在线| 久久久99爱| 国产高清一级毛片在线不卡| 国产精品视频yy9299一区| 伊人色综合影院| av软件在线观看| 亚洲国产综合91精品麻豆| 内射国产内射夫妻免费频道| 东京一区二区| 欧美日韩视频在线观看一区二区三区 | 日韩欧美国产高清| 男人网站在线观看| 中文字幕亚洲影视| 日韩视频一区在线| 成年人一级黄色片| 妖精视频成人观看www| 国产精品久久久久久av| 国产毛片毛片毛片毛片| 成人avav在线| 日韩精品国内| 91三级在线| 欧美午夜视频一区二区| 蜜臀av免费观看| 亚洲日本va| 亚洲欧美一区二区精品久久久| 亚洲精品电影院| 狠狠爱综合网| 国产精品久久久久久久久久尿| 国产三级午夜理伦三级| 99久久伊人精品| 一区二区国产日产| 波多野结衣在线观看| 欧美午夜精品久久久| 久久久久亚洲av成人网人人软件| 国产一区二区三区电影在线观看| 免费99精品国产自在在线| 人妻丰满熟妇av无码区| 国产在线不卡一区| 久久影院理伦片| 天天色天天射天天综合网| 色琪琪一区二区三区亚洲区| 少妇搡bbbb搡bbb搡打电话| 精品国产欧美日韩| 久久久久国产精品一区| 国产精品无码AV| 久久久国产综合精品女国产盗摄| 亚洲国产一二三精品无码| 肉色欧美久久久久久久免费看| 日韩午夜中文字幕| 青青青视频在线播放| 一区二区三区四区五区在线| 2019国产精品视频| 色开心亚洲综合| 色哟哟一区二区在线观看| 国产人成视频在线观看| 亚洲精品久久| 国产在线观看精品| 国内三级在线观看| 狠狠色香婷婷久久亚洲精品| 无码人妻一区二区三区免费n鬼沢| 久久亚洲国产| 国产第一区电影| 日韩精品视频在线观看一区二区三区| 亚洲一区在线播放| a级大片免费看| 欧美高清视频在线观看mv| 国产精品电影网| 国产在线观看网站| 福利一区视频在线观看| 久久久久久久人妻无码中文字幕爆| 91超碰国产精品| 成人h猎奇视频网站| 91伦理视频在线观看| 色婷婷综合久久| 国产激情在线免费观看| 国产精品亚洲综合久久| 国内精品视频在线播放| 2021天堂中文幕一二区在线观| 欧美xxxxxxxx| 久久中文字幕无码| 国产99久久精品| 97在线国产视频| 国产成人精品福利| 国模吧一区二区| 凸凹人妻人人澡人人添| 午夜精品一区在线观看| 午夜久久久久久久| 亚洲毛片网站| 欧美日韩电影一区二区| 校园春色亚洲色图| 尤物yw午夜国产精品视频明星| 国产免费a视频| 国产精品视频一二三| 手机av在线网| 女人天堂亚洲aⅴ在线观看| 999国产在线| 97天天综合网| 亚洲精品在线观看www| 日本黄色中文字幕| 国产精品国产三级国产有无不卡 | 国产人妻精品一区二区三区| 亚洲欧美另类图片小说| 亚洲色图欧美另类| 亚洲欧美高清| 亚洲成人第一| 欧美电影院免费观看| 久久久噜噜噜久久| 欧美少妇另类| 欧美精品日日鲁夜夜添| 久久精品视频免费在线观看| 99久久精品99国产精品| 国产精品视频分类| 你懂的国产精品永久在线| 国产麻豆乱码精品一区二区三区| 日本免费久久| 大胆人体色综合| 天天操天天干天天操| 欧美日韩中文字幕一区二区| 免费在线观看亚洲| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲欧美自偷自拍另类| 欧美视频日韩| 欧美亚洲另类久久综合| 国产一区二区三区亚洲综合| 欧美性受xxxx白人性爽| a毛片在线看免费观看| 日韩精品免费在线| 91精品国产乱码久久久久| 天天综合网 天天综合色| 国产精品www爽爽爽| 国产不卡高清在线观看视频| 成人免费毛片播放| 亚洲视频免费| 亚洲一区二区在线看| 黑人久久a级毛片免费观看| 国产精品久久9| 成av人片在线观看www| 日韩专区中文字幕| 免费人成在线观看网站| 精品久久一区二区| 中文字幕日韩三级| 欧美日韩一区二区在线播放| 欧美三级免费看| 国产精品美女久久久久久久网站| 亚洲一区二区三区四区五区六区| 韩日av一区二区| 欧洲熟妇精品视频| 精久久久久久| 久久精品在线免费视频| 成人在线免费小视频| 久久精品国产理论片免费| 亚洲1区在线| 国产日韩精品视频| 欧美男体视频| 日韩av成人在线观看| h片在线观看| 欧美成人sm免费视频| 伊人在线视频| 中文字幕精品av| 久久视频www| 亚洲欧美国产一区二区三区| 欧日韩在线视频| 日韩欧美国产电影| 精品国精品国产自在久不卡| 制服视频三区第一页精品| 中文字幕精品在线观看| 91黄色免费网站| 最近免费中文字幕大全免费版视频| 亚洲va韩国va欧美va| 久久久99精品| 一区二区三区四区精品在线视频| av激情在线观看| 欧美激情综合网| 波多野结衣av在线观看| 久久久久久97三级| av小说在线观看| 国产午夜精品福利| 国产传媒国产传媒| 国产欧美日韩视频一区二区| 亚洲av成人无码久久精品| 久久女同精品一区二区| 国产三级国产精品| 久久久久88色偷偷免费| 蜜桃av免费看| 欧美国产欧美综合| 黄色av免费播放| 国产精品对白交换视频| 顶臀精品视频www| 亚洲免费看黄网站| 国产真实的和子乱拍在线观看| 亚洲国产精品一区二区久久 | 超碰在线公开| 热久久免费国产视频| 日韩av免费| 国产自摸综合网| 午夜视频一区二区在线观看| 国产66精品久久久久999小说| 免费看久久久| 欧美在线激情| 亚洲精品成人影院| 日本a视频在线观看| 欧美一级一区| jizz18女人| 高清在线观看日韩| 美国黄色一级毛片| 中文字幕不卡在线播放| 成年人午夜剧场| 午夜日韩在线电影| 免费黄色片视频| 制服丝袜国产精品| 无码国产伦一区二区三区视频 | 日韩高清一区二区| 天堂在线一区二区三区| 成人夜色视频网站在线观看| 不卡日韩av| 国产一区在线电影| 深田咏美在线x99av| 你懂的一区二区| 99久久久无码国产精品6| 久久国产乱子精品免费女| 欧美熟妇精品一区二区| 久久精品视频在线免费观看| 污污的视频在线免费观看| 激情懂色av一区av二区av| 亚洲精品一区二区二区| 亚洲а∨天堂久久精品9966| 99免在线观看免费视频高清| 久久免费视频这里只有精品| 日韩毛片一区| 国产自产精品| 99视频精品视频高清免费| 欧美 国产 综合| 激情欧美一区二区三区在线观看| 亚洲视频在线播放免费| 亚洲欧洲在线观看av| 九九热在线视频播放| 欧美丰满一区二区免费视频| 手机亚洲第一页| 欧美激情精品久久久久久蜜臀 | 久久av一区二区| 女人香蕉久久**毛片精品| 日日碰狠狠躁久久躁婷婷| 国产黄色成人av| 黄色片网站在线播放| 欧美性开放视频| 国产精品欧美亚洲| 国产亚洲精品久久久久久牛牛 | 国产永久免费高清在线观看 | 亚洲欧美制服丝袜| 天堂8中文在线| 国产在线拍揄自揄视频不卡99| 亚洲涩涩av| 亚欧无线一线二线三线区别| 成人一道本在线| 国产性生活网站| 欧美一区二区福利在线| 色综合久久影院| 国产精品扒开腿做| 亚洲专区视频| 久久久久久久久久久视频| 99久久精品免费| 日产欧产va高清| 亚洲国产高潮在线观看| 福利小视频在线| 成人自拍视频网站| 欧美视频在线观看| 日本一二三区在线| 亚洲欧洲日韩女同| 国产精品爽爽久久| 粗暴蹂躏中文一区二区三区| 欧美高清一级片| 免费cad大片在线观看| 国产成人8x视频一区二区| 精品一区在线观看视频| 日韩精品一区二区三区视频 | 一级全黄裸体片| 一区二区三区在线影院| 精品欧美在线观看| 久久久久久国产免费 | 亚洲韩国在线| 久久99精品久久久久久动态图 | 国产精品麻豆入口| 亚洲v日本v欧美v久久精品| 女人18毛片一区二区三区| 亚州精品天堂中文字幕| 欧美日韩一区二区三区四区不卡 | 亚洲一区二区福利| 久久野战av| 亚洲自拍偷拍二区| 韩国理伦片一区二区三区在线播放| 三上悠亚在线观看视频| 91精品国产福利在线观看| а√天堂官网中文在线| 国产成人精品免费视频大全最热| 亚洲精选在线| 阿v天堂2014| 欧美高清性hdvideosex| 丝袜美女在线观看| 国产一区二区三区高清| 久久高清免费观看| 国产精品视频看看| 精品国产一区二区亚洲人成毛片 | 国模大胆一区二区三区| 亚洲精品乱码久久| 色噜噜狠狠色综合中国| 老司机在线看片网av| 国产精品国产精品| 久久久精品性| 国产一二三四区| 日韩精品一区二区三区第95| 欧美综合影院| 亚洲精品蜜桃久久久久久| 久久精品水蜜桃av综合天堂| 国产熟女一区二区三区五月婷 | 四虎影视国产精品| av片在线免费| 国产调教视频一区| av高清一区二区| 欧美在线视频导航| 久久久久国产| 亚洲国产果冻传媒av在线观看| 欧美午夜免费电影| 毛片在线网址| 亚洲精品国产系列| 99久久精品国产导航| 国产普通话bbwbbwbbw| 3344国产精品免费看| 中文在线播放一区二区|