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

給,你們要的高性能日志記錄工具 Log4j 2

開發 開發工具
Log4j 介紹過了,SLF4J 介紹過了,Logback 也介紹過了,你以為日志系列的文章就到此終結了?

[[350391]]

 Log4j 介紹過了,SLF4J 介紹過了,Logback 也介紹過了,你以為日志系列的文章就到此終結了?

不不不,我告訴你,還有一個 Log4j 2,顧名思義,它就是 Log4j 的升級版,就好像手機里面的 Pro 版。我作為一個寫文章方面的工具人,或者叫打工人,怎么能不寫完這最后一篇。

Log4j、SLF4J、Logback 是一個爹——Ceki Gulcu,但 Log4j 2 卻是例外,它是 Apache 基金會的產品。

SLF4J 和 Logback 作為 Log4j 的替代品,在很多方面都做了必要的改進,那為什么還需要 Log4j 2 呢?我只能說 Apache 基金會的開發人員很閑,不,很拼,要不是他們這種精益求精的精神,這個編程的世界該有多枯燥,畢竟少了很多可以用“拿來就用”的輪子啊。

上一篇也說了,老板下死命令要我把日志系統切換到 Logback,我順利交差了,老板很開心,夸我這個打工人很敬業。為了表達對老板的這份感謝,我決定偷偷摸摸地試水一下 Log4j 2,盡管它還不是個成品,可能會會項目帶來一定的隱患。但誰讓咱是一個敬崗愛業的打工人呢。

 

01、Log4j 2 強在哪

1)在多線程場景下,Log4j 2 的吞吐量比 Logback 高出了 10 倍,延遲降低了幾個數量級。這話聽起來像吹牛,反正是 Log4j 2 官方自己吹的。

Log4j 2 的異步 Logger 使用的是無鎖數據結構,而 Logback 和 Log4j 的異步 Logger 使用的是 ArrayBlockingQueue。對于阻塞隊列,多線程應用程序在嘗試使日志事件入隊時通常會遇到鎖爭用。

下圖說明了多線程方案中無鎖數據結構對吞吐量的影響。Log4j 2 隨著線程數量的擴展而更好地擴展:具有更多線程的應用程序可以記錄更多的日志。其他日志記錄庫由于存在鎖競爭的關系,在記錄更多線程時,總吞吐量保持恒定或下降。這意味著使用其他日志記錄庫,每個單獨的線程將能夠減少日志記錄。

 

性能方面是 Log4j 2 的最大亮點,至于其他方面的一些優勢,比如說下面這些,可以忽略不計,文字有多短就代表它有多不重要。

2)Log4j 2 可以減少垃圾收集器的壓力。

3)支持 Lambda 表達式。

4)支持自動重載配置。

02、Log4j 2 使用示例

廢話不多說,直接實操開干。理論知識有用,但不如上手實操一把,這也是我多年養成的一個“不那么良好”的編程習慣:在實操中發現問題,解決問題,尋找理論基礎。

第一步,在 pom.xml 文件中添加 Log4j 2 的依賴:

  1. <dependency> 
  2.     <groupId>org.apache.logging.log4j</groupId> 
  3.     <artifactId>log4j-api</artifactId> 
  4.     <version>2.5</version> 
  5. </dependency> 
  6. <dependency> 
  7.     <groupId>org.apache.logging.log4j</groupId> 
  8.     <artifactId>log4j-core</artifactId> 
  9.     <version>2.5</version> 
  10. </dependency> 

(這個 artifactId 還是 log4j,沒有體現出來 2,而在 version 中體現,多少叫人誤以為是 log4j)

第二步,來個最簡單的測試用例:

  1. import org.apache.logging.log4j.LogManager; 
  2. import org.apache.logging.log4j.Logger; 
  3.  
  4. public class Demo { 
  5.     private static final Logger logger = LogManager.getLogger(Demo.class); 
  6.     public static void main(String[] args) { 
  7.         logger.debug("log4j2"); 
  8.     } 

運行 Demo 類,可以在控制臺看到以下信息:

  1. ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. 

Log4j 2 竟然沒有在控制臺打印“ log4j2”,還抱怨我們沒有為它指定配置文件。在這一點上,我就覺得它沒有 Logback 好,畢竟人家會輸出。

這對于新手來說,很不友好,因為新手在遇到這種情況的時候,往往不知所措。日志里面雖然體現了 ERROR,但代碼并沒有編譯出錯或者運行出錯,憑什么你不輸出?

那作為編程老鳥來說,我得告訴你,這時候最好探究一下為什么。怎么做呢?

我們可以復制一下日志信息中的關鍵字,比如說:“No log4j2 configuration file found”,然后在 Intellij IDEA 中搜一下,如果你下載了源碼和文檔的話,不出意外,你會在 ConfigurationFactory 類中搜到這段話。

可以在方法中打個斷點,然后 debug 一下,你就會看到下圖中的內容。

 

通過源碼,你可以看得到,Log4j 2 會去尋找 4 種類型的配置文件,后綴分別是 properties、yaml、json 和 xml。前綴是 log4j2-test 或者 log4j2。

得到這個提示后,就可以進行第三步了。

第三步,在 resource 目錄下增加 log4j2-test.xml 文件(方便和 Logback 做對比),內容如下所示:

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <Configuration> 
  3.     <Appenders> 
  4.         <Console name="Console" target="SYSTEM_OUT"
  5.             <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
  6.         </Console> 
  7.     </Appenders> 
  8.     <Loggers> 
  9.         <Root level="DEBUG"
  10.             <AppenderRef ref="Console"/> 
  11.         </Root> 
  12.     </Loggers> 
  13. </Configuration> 

1)配置 appender,也就是配置日志的輸出目的地。

有 Console,典型的控制臺配置信息上面你也看到了,我來簡單解釋一下里面 pattern 的格式:

  • %d{HH:mm:ss.SSS} 表示輸出到毫秒的時間
  • %t 輸出當前線程名稱
  • %-5level 輸出日志級別,-5 表示左對齊并且固定輸出 5 個字符,如果不足在右邊補空格
  • %logger 輸出 logger 名稱,最多 36 個字符
  • %msg 日志文本
  • %n 換行

順帶補充一下其他常用的占位符:

  • %F 輸出所在的類文件名,如 Demo.java
  • %L 輸出行號
  • %M 輸出所在方法名
  • %l 輸出語句所在的行數, 包括類名、方法名、文件名、行數
  • %p 輸出日志級別
  • %c 輸出包名,如果后面跟有 {length.} 參數,比如說 %c{1.},它將輸出報名的第一個字符,如 com.itwanger 的實際報名將只輸出 c.i

再次運行 Demo 類,就可以在控制臺看到打印的日志信息了:

  1. 10:14:04.657 [main] DEBUG com.itwanger.Demo - log4j2 

2)配置 Loggers,指定 Root 的日志級別,并且指定具體啟用哪一個 Appenders。

3)自動重載配置。

Logback 支持自動重載配置,Log4j 2 也支持,那想要啟用這個功能也非常簡單,只需要在 Configuration 元素上添加 monitorInterval 屬性即可。

  1. <Configuration monitorInterval="30"
  2. ... 
  3. </Configuration> 

注意值要設置成非零,上例中的意思是至少 30 秒后檢查配置文件中的更改。最小間隔為 5 秒。

03、Async 示例

除了 Console,還有 Async,可以配合文件的方式來異步寫入,典型的配置信息如下所示:

  1. <Configuration> 
  2.   <Appenders> 
  3.     <File name="DebugFile" fileName="debug.log"
  4.       <PatternLayout> 
  5.         <Pattern>%d %p %c [%t] %m%n</Pattern> 
  6.       </PatternLayout> 
  7.     </File> 
  8.     <Async name="Async"
  9.       <AppenderRef ref="DebugFile"/> 
  10.     </Async> 
  11.   </Appenders> 
  12.   <Loggers> 
  13.     <Root level="debug"
  14.       <AppenderRef ref="Async"/> 
  15.     </Root> 
  16.   </Loggers> 
  17. </Configuration> 

對比 Logback 的配置文件來看,Log4j 2 真的復雜了一些,不太好用,就這么直白地說吧!但自己約的,含著淚也得打完啊。把這個 Async 加入到 Appenders:

  1. <Configuration> 
  2.     <Appenders> 
  3.         <Console name="Console" target="SYSTEM_OUT"
  4.             <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
  5.         </Console> 
  6.         <File name="DebugFile" fileName="debug.log"
  7.             <PatternLayout> 
  8.                 <Pattern>%d %p %c [%t] %m%n</Pattern> 
  9.             </PatternLayout> 
  10.         </File> 
  11.         <Async name="Async"
  12.             <AppenderRef ref="DebugFile"/> 
  13.         </Async> 
  14.     </Appenders> 
  15.     <Loggers> 
  16.         <Root level="DEBUG"
  17.             <AppenderRef ref="Console"/> 
  18.             <AppenderRef ref="Async"/> 
  19.         </Root> 
  20.     </Loggers> 
  21. </Configuration> 

再次運行 Demo 類,可以在項目根路徑下看到一個 debug.log 文件,內容如下所示:

  1. 2020-10-30 09:35:49,705 DEBUG com.itwanger.Demo [main] log4j2 

04、RollingFile 示例

當然了,Log4j 和 Logback 我們都配置了 RollingFile,Log4j 2 也少不了。RollingFile 會根據 Triggering(觸發)策略和 Rollover(過渡)策略來進行日志文件滾動。如果沒有配置 Rollover,則使用 DefaultRolloverStrategy 來作為 RollingFile 的默認配置。

觸發策略包含有,基于 cron 表達式(源于希臘語,時間的意思,用來配置定期執行任務的時間格式)的 CronTriggeringPolicy;基于文件大小的 SizeBasedTriggeringPolicy;基于時間的 TimeBasedTriggeringPolicy。

過渡策略包含有,默認的過渡策略 DefaultRolloverStrategy,直接寫入的 DirectWriteRolloverStrategy。一般情況下,采用默認的過渡策略即可,它已經足夠強大。

來看第一個基于 SizeBasedTriggeringPolicy 和 TimeBasedTriggeringPolicy 策略,以及缺省 DefaultRolloverStrategy 策略的配置示例:

  1. <Configuration> 
  2.   <Appenders> 
  3.     <RollingFile name="RollingFile" fileName="rolling.log" 
  4.                  filePattern="rolling-%d{yyyy-MM-dd}-%i.log"
  5.       <PatternLayout> 
  6.         <Pattern>%d %p %c{1.} [%t] %m%n</Pattern> 
  7.       </PatternLayout> 
  8.       <Policies> 
  9.         <SizeBasedTriggeringPolicy size="1 KB"/> 
  10.       </Policies> 
  11.     </RollingFile> 
  12.   </Appenders> 
  13.   <Loggers> 
  14.     <Root level="debug"
  15.       <AppenderRef ref="RollingFile"/> 
  16.     </Root> 
  17.   </Loggers> 
  18. </Configuration> 

為了驗證文件的滾動策略,我們調整一下 Demo 類,讓它多打印點日志:

  1. for (int i = 1;i < 20; i++) { 
  2.     logger.debug("微信搜索「{}」,回復關鍵字「{}」,有驚喜哦","沉默王二""java"); 

再次運行 Demo 類,可以看到根目錄下多了 3 個日志文件:

 

結合日志文件名,再來看 RollingFile 的配置,就很容易理解了。

1)fileName 用來指定文件名。

2)filePattern 用來指定文件名的模式,它取決于過渡策略。

由于配置文件中沒有顯式指定過渡策略,因此 RollingFile 會啟用默認的 DefaultRolloverStrategy。

先來看一下 DefaultRolloverStrategy 的屬性:

 


 

 

再來看 filePattern 的值 rolling-%d{yyyy-MM-dd}-%i.log,其中 %d{yyyy-MM-dd} 很好理解,就是年月日;其中 %i 是什么意思呢?

第一個日志文件名為 rolling.log(最近的日志放在這個里面),第二個文件名除去日期為 rolling-1.log,第二個文件名除去日期為 rolling-2.log,根據這些信息,你能猜到其中的規律嗎?

其實和 DefaultRolloverStrategy 中的 max 屬性有關,目前使用的默認值,也就是 7,那就當 rolling-8.log 要生成的時候,刪除 rolling-1.log??梢哉{整 Demo 中的日志輸出量來進行驗證。

3)SizeBasedTriggeringPolicy,基于日志文件大小的時間策略,大小以字節為單位,后綴可以是 KB,MB 或 GB,例如 20 MB。

再來看一個日志文件壓縮的示例,來看配置:

  1. <RollingFile name="RollingFileGZ" fileName="gz/rolling.log" 
  2.              filePattern="gz/%d{yyyy-MM-dd-HH}-%i.rolling.gz"
  3.     <PatternLayout> 
  4.         <Pattern>%d %p %c{1.} [%t] %m%n</Pattern> 
  5.     </PatternLayout> 
  6.     <Policies> 
  7.         <SizeBasedTriggeringPolicy size="1 KB"/> 
  8.     </Policies> 
  9. </RollingFile> 
  • fileName 的屬性值中包含了一個目錄 gz,也就是說日志文件都將放在這個目錄下。
  • filePattern 的屬性值中增加了一個 gz 的后綴,這就表明日志文件要進行壓縮了,還可以是 zip 格式。

運行 Demo 后,可以在 gz 目錄下看到以下文件:

 

到此為止,Log4j 2 的基本使用示例就已經完成了。測試環境搞定,我去問一下老板,要不要在生產環境下使用 Log4j 2。

 

04、日志手冊

到此為止,日志系統的全家桶 Log4j、SLF4J、Logback、Log4j 2 都被我搞定了。也就意味著,一份將近 2 萬字的 PDF 誕生了!MD,我也要成為肝帝!

有了這份 PDF,硬氣地告訴 Leader 或者老板吧,再也不用擔心代碼中會亂打印日志了。墻都不扶就服你。

地址我貼一下:

鏈接:https://pan.baidu.com/s/1dPwsQhT5OMVapE7hGi7vww 密碼:fxxy

偷偷地告訴你吧,白嫖的感覺就是舒服,趕緊去下載吧!

本文轉載自微信公眾號「沉默王二」,可以通過以下二維碼關注。轉載本文請聯系沉默王二公眾號。

 

責任編輯:武曉燕 來源: 沉默王二
相關推薦

2024-10-30 15:43:56

2009-07-08 14:33:46

Java日志框架Log4J

2020-01-07 10:06:26

Slf4jLog4JLogback

2022-03-25 13:42:15

Log4j漏洞網絡安全

2013-05-21 10:58:43

Log4jActiveMQSpring

2022-02-15 17:51:38

Log4j漏洞網絡安全

2022-02-13 16:18:57

JetBrainsIntelliJLog4j

2021-12-14 23:44:26

漏洞Log4j項目

2021-12-19 07:59:49

微軟Azure SentiLog4j 2 漏洞

2016-10-21 13:10:18

javalog4jslf4j

2025-01-14 01:00:00

日志接口Log4j

2022-01-10 11:54:54

FTCLog4j聯邦貿易委員會

2021-12-23 09:47:36

Log4jRCE漏洞DoS漏洞

2022-01-24 10:02:53

漏洞微軟網絡攻擊

2021-12-23 11:03:25

Log4j 漏洞漏洞

2022-01-27 09:16:08

CPU內存.NET

2009-06-12 17:03:51

JBoss和log4j

2022-03-30 11:29:53

漏洞補丁Spring

2021-12-24 09:52:31

Traefik Log4J 漏洞

2021-06-03 10:58:16

logbacklog4jJava
點贊
收藏

51CTO技術棧公眾號

欧美日韩国产999| 欧美中文字幕一二三区视频| 国产精品入口免费| 激情五月婷婷网| 日韩久久精品| 亚洲国产精品推荐| 在线观看国产中文字幕| 在线播放免费av| 久久久久久毛片| 亚洲资源在线看| 国产91国语对白在线| 自拍偷拍欧美专区| 亚洲欧美另类自拍| 性一交一黄一片| 亚洲v.com| 亚洲精品老司机| 日韩三级电影| 手机在线观看毛片| 国产一区二区在线视频| 国产成人精品综合| 日韩av片在线播放| 仙踪林久久久久久久999| 亚洲开心激情网| 永久免费看片在线观看| 成人国产精选| 色婷婷香蕉在线一区二区| 国产av熟女一区二区三区| 3d成人动漫在线| 久久综合久久综合九色| 国产乱码精品一区二区三区不卡| 国产一区二区波多野结衣| 性8sex亚洲区入口| 午夜伦理精品一区| 国产真实夫妇交换视频| 亚欧美无遮挡hd高清在线视频| 亚洲男人天堂九九视频| 黄色片视频免费观看| 成人激情自拍| 亚洲变态欧美另类捆绑| 91视频福利网| 成人动漫视频在线观看| 欧美日韩亚洲综合一区二区三区| 黄色a级片免费| 国产传媒av在线| 亚洲成av人在线观看| a级网站在线观看| 精品自拍一区| 亚洲美女淫视频| 日日噜噜噜夜夜爽爽| 欧美一区二区三区在线观看免费| 国产精品色哟哟| 一区二区三区四区视频在线| eeuss影院在线观看| 欧美极品aⅴ影院| 亚洲精品国产精品国自产| 黄色小视频在线免费观看| 国产偷国产偷亚洲高清人白洁| 久久av一区二区| 天堂在线中文资源| 久久色视频免费观看| 欧美精品一区三区在线观看| 国产九九在线| 亚洲国产精品99久久久久久久久 | 日韩在线视频一区二区三区| 欧美一区二区在线免费观看| 在线成人精品视频| 国产极品模特精品一二| 日韩精品视频中文在线观看| 久久久久国产精品区片区无码| 窝窝社区一区二区| 亚洲视频自拍偷拍| 少妇的滋味中文字幕bd| 欧美不卡视频| 7m精品福利视频导航| 波多野结衣电车痴汉| 另类欧美日韩国产在线| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | se在线电影| 一区免费观看视频| 免费高清一区二区三区| 日韩伦理福利| 欧美猛男男办公室激情| 国产免费无码一区二区| 日韩高清一级| 色一区av在线| 久久国产在线视频| 日韩精品亚洲一区二区三区免费| 91亚洲精华国产精华| 黄色一级a毛片| 欧美激情在线免费观看| 国产乱子伦精品视频| 中文字幕在线中文字幕在线中三区| 欧美亚洲动漫精品| 人妻互换一二三区激情视频| 精品久久久久久久久久久下田| 美女视频黄免费的亚洲男人天堂| 日韩精品视频免费播放| 蜜桃视频一区二区| 国产精品乱码视频| 午夜激情在线观看| 精品久久久久久中文字幕大豆网| 色婷婷.com| 麻豆一区一区三区四区| 精品国产一区二区三区久久久狼 | 伊人久久大香线蕉av超碰演员| 日本午夜精品理论片a级appf发布| 国产精品久久久久久免费免熟| www.日韩av| 2025韩国大尺度电影| 中文字幕乱码在线播放| 欧美一级在线免费| 国产1区2区在线观看| 在线视频观看日韩| 91欧美激情另类亚洲| 黄色在线免费观看大全| 亚洲国产成人av| 亚洲国产欧美91| 成人高清av| 26uuu日韩精品一区二区| jlzzjlzzjlzz亚洲人| 欧美国产精品一区| 国产男女在线观看| 超碰成人97| 久久6免费高清热精品| 在线视频你懂得| 久久亚洲春色中文字幕久久久| 日本a在线天堂| 欧美成人黄色| 国产亚洲成精品久久| 国产成人自拍视频在线| 国产91精品露脸国语对白| 香蕉视频免费版| 青青草国产一区二区三区| 亚洲日韩欧美视频一区| 黄网在线观看视频| kk眼镜猥琐国模调教系列一区二区| 国产91porn| 精品一区91| 久久久精品影院| 一区二区三区精彩视频| 国产精品人成在线观看免费| 精品久久久久av| 亚洲欧美tv| 欧美亚洲伦理www| 熟妇人妻系列aⅴ无码专区友真希 熟妇人妻av无码一区二区三区 | 老熟妇高潮一区二区三区| 日韩高清在线电影| 欧美亚洲国产免费| 日韩免费福利视频| 亚洲欧美日韩中文视频| 日韩综合在线观看| 久久丝袜美腿综合| 88av.com| 日韩成人精品一区| 91精品国产综合久久男男| 亚洲天天影视| 91麻豆精品91久久久久同性| 国产麻豆视频在线观看| 国内国产精品久久| 最新av网址在线观看| www.爱久久| 性日韩欧美在线视频| 全色精品综合影院| 色婷婷综合久久久中文一区二区| 久久久久久久毛片| 久久国产麻豆精品| 日韩视频在线观看视频| 日韩欧美一级| 97超碰色婷婷| 91官网在线| 7777精品伊人久久久大香线蕉 | 成人在线视频免费播放| 在线综合欧美| 亚洲春色综合另类校园电影| 亚洲精品乱码日韩| 欧美成人免费全部观看天天性色| 精品毛片在线观看| 婷婷一区二区三区| 又色又爽的视频| 国产成人亚洲综合色影视| 俄罗斯av网站| 成人在线免费视频观看| 91原创国产| 黑人巨大精品| 精品国偷自产在线视频| 午夜视频免费在线| 欧美日韩亚洲综合在线 | 五月天免费网站| 国产宾馆实践打屁股91| 超碰网在线观看| 你懂的国产精品永久在线| 久久一区免费| 欧美日本三级| 国产精品www色诱视频| 1区2区在线观看| 亚洲欧洲xxxx| 亚洲男人第一天堂| 欧美色网站导航| 日本免费一二三区| 国产精品久久夜| aa一级黄色片| 国产成人亚洲综合色影视| 午夜视频你懂的| 99精品视频免费观看| 只有这里有精品| 欧美色婷婷久久99精品红桃| 国产日韩久久| 亚洲综合网站| 国产精品一区久久| 亚洲最大网站| 久久久久久久久亚洲| 精品51国产黑色丝袜高跟鞋| 亚洲欧美国产日韩中文字幕| 国产成人自拍一区| 日韩写真欧美这视频| 国产一级片一区二区| 精品日韩中文字幕| 国产精品第72页| 亚洲精品日韩专区silk| 老司机精品免费视频| 95精品视频在线| 国产人成视频在线观看| 国内成人自拍视频| 亚洲欧美偷拍另类| 青青青爽久久午夜综合久久午夜| 人妻有码中文字幕| aa亚洲婷婷| 欧美在线一区视频| 狠狠久久婷婷| 欧美这里只有精品| 欧美日本一区二区视频在线观看 | 在线视频三区| 亚洲欧美在线磁力| 欧美性孕妇孕交| 日韩精品在线观看视频| 污污网站免费在线观看| 欧美成人三级电影在线| 亚洲h视频在线观看| 日韩欧美国产高清| 国产小视频一区| 精品va天堂亚洲国产| 日本高清视频www| 亚洲国模精品一区| 无码精品视频一区二区三区 | 亚洲综合日韩在线| 999精品视频在线观看| 成人伊人精品色xxxx视频| 色婷婷成人网| 成人免费网站在线| 日韩精品一区国产| 国产精品久久久对白| 欧美成人基地| 欧美精品亚洲| 日韩dvd碟片| 中文字幕第50页| 欧美午夜久久| 欧美大片在线播放| 免费一区视频| 欧美三级午夜理伦三级富婆| 久久99久久精品| 亚洲欧洲日韩综合| 99r精品视频| 精品无码人妻一区二区免费蜜桃| 欧美激情资源网| 国产三级国产精品国产国在线观看| 亚洲人午夜精品天堂一二香蕉| 久久久久成人精品无码| 午夜精品久久久久久久99水蜜桃 | 日韩一区欧美二区| 久久久久久久久久一区| 国产精品538一区二区在线| 久久精品aⅴ无码中文字字幕重口| 成人国产电影网| 亚洲精品成人无码| 亚洲四区在线观看| 日韩手机在线观看| 色噜噜夜夜夜综合网| 国产又粗又大又黄| 亚洲国产精品久久久久秋霞蜜臀| 国产在线三区| 美日韩在线视频| 一区二区精品伦理...| 国产日韩欧美成人| 伦理一区二区| 色撸撸在线观看| 99精品国产在热久久婷婷| 色国产在线视频| 成人av电影在线播放| 91麻豆制片厂| 午夜视频在线观看一区二区| 中国老头性行为xxxx| 欧美va日韩va| 第一页在线观看| 午夜精品久久久久久久男人的天堂| 国产私拍福利精品视频二区| 国产经品一区二区| 日韩精品一卡| 亚洲中文字幕无码专区| 激情久久五月天| 老牛影视av老牛影视av| 一区二区三区在线视频播放| 91黑人精品一区二区三区| 日韩女优制服丝袜电影| 在线看黄色av| 欧洲亚洲妇女av| 国产精品99久久免费观看| 综合视频在线观看| 久久综合网络一区二区| av av在线| 亚洲乱码日产精品bd| 在线观看免费黄色小视频| 日韩大陆毛片av| 先锋成人av| 成人在线免费观看视视频| 久草成人在线| 成人免费在线网| 国产成人在线视频网站| 999精品在线视频| 日本乱码高清不卡字幕| 午夜国产在线视频| 国模吧一区二区三区| 亚洲码欧美码一区二区三区| 亚洲一区二区在线看| 久久男女视频| 黄色短视频在线观看| 亚洲二区在线观看| 国产黄色美女视频| 美日韩精品免费观看视频| 先锋影音一区二区| 亚洲一区二区三区在线观看视频| 丝袜美腿亚洲一区| 怡红院一区二区三区| 一本高清dvd不卡在线观看| 人妻与黑人一区二区三区| 欧美丰满片xxx777| 日韩精品一区二区三区中文字幕| 好色先生视频污| 国产一区二区中文字幕| 男女做暖暖视频| 日韩一级欧美一级| 污污的网站在线看| 国产66精品久久久久999小说| 欧美在线三区| www.欧美com| 午夜国产精品影院在线观看| 老牛影视av牛牛影视av| 97视频在线观看视频免费视频| 欧美日韩一本| 国产美女无遮挡网站| 久久这里只有精品视频网| 精品国产乱子伦| 一色桃子一区二区| 欧美成人家庭影院| 青青草免费在线视频观看| 丰满放荡岳乱妇91ww| 五月天婷婷综合网| 亚洲欧美精品中文字幕在线| 蜜桃精品在线| 国产免费色视频| 国产激情精品久久久第一区二区| 欧美久久久久久久久久久久| 欧美成人在线直播| 日本不卡免费高清视频在线| 热re99久久精品国产99热| 精品一区二区三区蜜桃| 妺妺窝人体色www聚色窝仙踪| 亚洲精品在线三区| 欲香欲色天天天综合和网| 日韩一区二区三区资源| 精品亚洲欧美一区| 国产在线拍揄自揄拍| 精品性高朝久久久久久久| 国产福利亚洲| 国产尤物av一区二区三区| 2020国产精品久久精品美国| 中文字幕+乱码+中文乱码www| 欧美精品免费播放| 五月天亚洲色图| 中文av字幕在线观看| 亚洲高清不卡在线| eeuss影院www在线播放| 99re资源| 日本不卡一区二区三区高清视频| www.av视频| 亚洲人成在线观| 日韩欧美中文字幕一区二区三区| 国产超级av在线| 亚洲视频香蕉人妖| 全色精品综合影院| 91成人在线看| 视频一区二区不卡| 欧美日韩中文字幕在线观看| 国产午夜精品视频免费不卡69堂| 国产精品一区免费在线 | 国产亚洲欧美日韩精品一区二区三区| 4444在线观看| 欧美激情一区二区三区全黄| 欧美一级特黄aaaaaa| 成人国产在线视频| 久久av最新网址|