国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

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

開(kāi)發(fā) 開(kāi)發(fā)工具
Log4j 介紹過(guò)了,SLF4J 介紹過(guò)了,Logback 也介紹過(guò)了,你以為日志系列的文章就到此終結(jié)了?

[[350391]]

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

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

Log4j、SLF4J、Logback 是一個(gè)爹——Ceki Gulcu,但 Log4j 2 卻是例外,它是 Apache 基金會(huì)的產(chǎn)品。

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

上一篇也說(shuō)了,老板下死命令要我把日志系統(tǒng)切換到 Logback,我順利交差了,老板很開(kāi)心,夸我這個(gè)打工人很敬業(yè)。為了表達(dá)對(duì)老板的這份感謝,我決定偷偷摸摸地試水一下 Log4j 2,盡管它還不是個(gè)成品,可能會(huì)會(huì)項(xiàng)目帶來(lái)一定的隱患。但誰(shuí)讓咱是一個(gè)敬崗愛(ài)業(yè)的打工人呢。

 

01、Log4j 2 強(qiáng)在哪

1)在多線程場(chǎng)景下,Log4j 2 的吞吐量比 Logback 高出了 10 倍,延遲降低了幾個(gè)數(shù)量級(jí)。這話聽(tīng)起來(lái)像吹牛,反正是 Log4j 2 官方自己吹的。

Log4j 2 的異步 Logger 使用的是無(wú)鎖數(shù)據(jù)結(jié)構(gòu),而 Logback 和 Log4j 的異步 Logger 使用的是 ArrayBlockingQueue。對(duì)于阻塞隊(duì)列,多線程應(yīng)用程序在嘗試使日志事件入隊(duì)時(shí)通常會(huì)遇到鎖爭(zhēng)用。

下圖說(shuō)明了多線程方案中無(wú)鎖數(shù)據(jù)結(jié)構(gòu)對(duì)吞吐量的影響。Log4j 2 隨著線程數(shù)量的擴(kuò)展而更好地?cái)U(kuò)展:具有更多線程的應(yīng)用程序可以記錄更多的日志。其他日志記錄庫(kù)由于存在鎖競(jìng)爭(zhēng)的關(guān)系,在記錄更多線程時(shí),總吞吐量保持恒定或下降。這意味著使用其他日志記錄庫(kù),每個(gè)單獨(dú)的線程將能夠減少日志記錄。

 

性能方面是 Log4j 2 的最大亮點(diǎn),至于其他方面的一些優(yōu)勢(shì),比如說(shuō)下面這些,可以忽略不計(jì),文字有多短就代表它有多不重要。

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

3)支持 Lambda 表達(dá)式。

4)支持自動(dòng)重載配置。

02、Log4j 2 使用示例

廢話不多說(shuō),直接實(shí)操開(kāi)干。理論知識(shí)有用,但不如上手實(shí)操一把,這也是我多年養(yǎng)成的一個(gè)“不那么良好”的編程習(xí)慣:在實(shí)操中發(fā)現(xiàn)問(wèn)題,解決問(wèn)題,尋找理論基礎(chǔ)。

第一步,在 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> 

(這個(gè) artifactId 還是 log4j,沒(méi)有體現(xiàn)出來(lái) 2,而在 version 中體現(xiàn),多少叫人誤以為是 log4j)

第二步,來(lái)個(gè)最簡(jiǎn)單的測(cè)試用例:

  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.     } 

運(yùn)行 Demo 類,可以在控制臺(tái)看到以下信息:

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

Log4j 2 竟然沒(méi)有在控制臺(tái)打印“ log4j2”,還抱怨我們沒(méi)有為它指定配置文件。在這一點(diǎn)上,我就覺(jué)得它沒(méi)有 Logback 好,畢竟人家會(huì)輸出。

這對(duì)于新手來(lái)說(shuō),很不友好,因?yàn)樾率衷谟龅竭@種情況的時(shí)候,往往不知所措。日志里面雖然體現(xiàn)了 ERROR,但代碼并沒(méi)有編譯出錯(cuò)或者運(yùn)行出錯(cuò),憑什么你不輸出?

那作為編程老鳥來(lái)說(shuō),我得告訴你,這時(shí)候最好探究一下為什么。怎么做呢?

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

可以在方法中打個(gè)斷點(diǎn),然后 debug 一下,你就會(huì)看到下圖中的內(nèi)容。

 

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

得到這個(gè)提示后,就可以進(jìn)行第三步了。

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

  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,典型的控制臺(tái)配置信息上面你也看到了,我來(lái)簡(jiǎn)單解釋一下里面 pattern 的格式:

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

順帶補(bǔ)充一下其他常用的占位符:

  • %F 輸出所在的類文件名,如 Demo.java
  • %L 輸出行號(hào)
  • %M 輸出所在方法名
  • %l 輸出語(yǔ)句所在的行數(shù), 包括類名、方法名、文件名、行數(shù)
  • %p 輸出日志級(jí)別
  • %c 輸出包名,如果后面跟有 {length.} 參數(shù),比如說(shuō) %c{1.},它將輸出報(bào)名的第一個(gè)字符,如 com.itwanger 的實(shí)際報(bào)名將只輸出 c.i

再次運(yùn)行 Demo 類,就可以在控制臺(tái)看到打印的日志信息了:

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

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

3)自動(dòng)重載配置。

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

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

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

03、Async 示例

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

  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> 

對(duì)比 Logback 的配置文件來(lái)看,Log4j 2 真的復(fù)雜了一些,不太好用,就這么直白地說(shuō)吧!但自己約的,含著淚也得打完啊。把這個(gè) 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> 

再次運(yùn)行 Demo 類,可以在項(xiàng)目根路徑下看到一個(gè) debug.log 文件,內(nèi)容如下所示:

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

04、RollingFile 示例

當(dāng)然了,Log4j 和 Logback 我們都配置了 RollingFile,Log4j 2 也少不了。RollingFile 會(huì)根據(jù) Triggering(觸發(fā))策略和 Rollover(過(guò)渡)策略來(lái)進(jìn)行日志文件滾動(dòng)。如果沒(méi)有配置 Rollover,則使用 DefaultRolloverStrategy 來(lái)作為 RollingFile 的默認(rèn)配置。

觸發(fā)策略包含有,基于 cron 表達(dá)式(源于希臘語(yǔ),時(shí)間的意思,用來(lái)配置定期執(zhí)行任務(wù)的時(shí)間格式)的 CronTriggeringPolicy;基于文件大小的 SizeBasedTriggeringPolicy;基于時(shí)間的 TimeBasedTriggeringPolicy。

過(guò)渡策略包含有,默認(rèn)的過(guò)渡策略 DefaultRolloverStrategy,直接寫入的 DirectWriteRolloverStrategy。一般情況下,采用默認(rèn)的過(guò)渡策略即可,它已經(jīng)足夠強(qiáng)大。

來(lái)看第一個(gè)基于 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> 

為了驗(yàn)證文件的滾動(dòng)策略,我們調(diào)整一下 Demo 類,讓它多打印點(diǎn)日志:

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

再次運(yùn)行 Demo 類,可以看到根目錄下多了 3 個(gè)日志文件:

 

結(jié)合日志文件名,再來(lái)看 RollingFile 的配置,就很容易理解了。

1)fileName 用來(lái)指定文件名。

2)filePattern 用來(lái)指定文件名的模式,它取決于過(guò)渡策略。

由于配置文件中沒(méi)有顯式指定過(guò)渡策略,因此 RollingFile 會(huì)啟用默認(rèn)的 DefaultRolloverStrategy。

先來(lái)看一下 DefaultRolloverStrategy 的屬性:

 


 

 

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

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

其實(shí)和 DefaultRolloverStrategy 中的 max 屬性有關(guān),目前使用的默認(rèn)值,也就是 7,那就當(dāng) rolling-8.log 要生成的時(shí)候,刪除 rolling-1.log。可以調(diào)整 Demo 中的日志輸出量來(lái)進(jìn)行驗(yàn)證。

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

再來(lái)看一個(gè)日志文件壓縮的示例,來(lái)看配置:

  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 的屬性值中包含了一個(gè)目錄 gz,也就是說(shuō)日志文件都將放在這個(gè)目錄下。
  • filePattern 的屬性值中增加了一個(gè) gz 的后綴,這就表明日志文件要進(jìn)行壓縮了,還可以是 zip 格式。

運(yùn)行 Demo 后,可以在 gz 目錄下看到以下文件:

 

到此為止,Log4j 2 的基本使用示例就已經(jīng)完成了。測(cè)試環(huán)境搞定,我去問(wèn)一下老板,要不要在生產(chǎn)環(huán)境下使用 Log4j 2。

 

04、日志手冊(cè)

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

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

地址我貼一下:

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

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

本文轉(zhuǎn)載自微信公眾號(hào)「沉默王二」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系沉默王二公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: 沉默王二
相關(guān)推薦

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漏洞網(wǎng)絡(luò)安全

2013-05-21 10:58:43

Log4jActiveMQSpring

2022-02-13 16:18:57

JetBrainsIntelliJLog4j

2022-02-15 17:51:38

Log4j漏洞網(wǎng)絡(luò)安全

2021-12-14 23:44:26

漏洞Log4j項(xiàng)目

2021-12-19 07:59:49

微軟Azure SentiLog4j 2 漏洞

2025-01-14 01:00:00

日志接口Log4j

2016-10-21 13:10:18

javalog4jslf4j

2022-01-10 11:54:54

FTCLog4j聯(lián)邦貿(mào)易委員會(huì)

2021-12-23 09:47:36

Log4jRCE漏洞DoS漏洞

2021-12-23 11:03:25

Log4j 漏洞漏洞

2022-01-24 10:02:53

漏洞微軟網(wǎng)絡(luò)攻擊

2022-01-27 09:16:08

CPU內(nèi)存.NET

2009-06-12 17:03:51

JBoss和log4j

2022-03-30 11:29:53

漏洞補(bǔ)丁Spring

2021-06-03 10:58:16

logbacklog4jJava

2021-12-13 01:49:34

漏洞Log4j代碼
點(diǎn)贊
收藏

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

毛片在线看片| 性欧美大战久久久久久久免费观看 | 蜜臀av一区| 在线免费日韩| 视频一区二区综合| 欧美精品一本久久男人的天堂| 亚洲午夜精品网| 一区二区三区成人精品| 全球最大av网站久久| 91在线最新| 一区二区三区在线视频111| 97国产在线观看| 91精品国产欧美一区二区| 92精品国产成人观看免费| 日韩精品影视| 成人免费看黄| 中文字幕第5页| 综合一区中文字幕| 国产精品第1页| 亚洲成人黄色在线| 亚洲精品免费在线播放| 久久一综合视频| 一本色道69色精品综合久久| 国产视频精选在线| 无码播放一区二区三区| 成人精品水蜜桃| 久久伊人免费视频| 51午夜精品国产| 亚洲欧洲性图库| 日本午夜精品一区二区三区电影 | 狠狠97人人婷婷五月| 成人国产在线视频| 正在播放亚洲1区| 91福利国产精品| 99久久国产综合精品女不卡| 国产精品theporn| 欧美经典一区| 国产区美女在线| 最新地址在线观看| 日本网站免费在线观看| 国产在线资源一区| 456亚洲影院| 亚洲午夜色婷婷在线| 91官网在线免费观看| 国产日本亚洲高清| 精品一区二区av| 欧美a级在线| av不卡一区二区| 一个人www视频在线免费观看| 天堂а√在线8种子蜜桃视频| 97国产在线播放| 日韩精品国内| 国产精品电影观看| 精品国产一区二区在线| 欧美一区二区三区系列电影| 亚洲精品国产品国语在线app| 国产做a爰片久久毛片| 欧美视频日韩| 亚洲免费福利一区| 日韩久久一区| 99re6在线精品视频免费播放| 美女毛片在线看| 免费观看羞羞视频网站| 无码人妻精品一区二区三区在线| 欧美精品国产精品久久久 | 在线观看91视频| 国产精品国产成人国产三级| 国产高清久久久| 天堂成人免费av电影一区| 手机在线一区二区三区| 国产精品三p一区二区| 成人在线免费av| 激情视频网站在线播放色| 一级日本在线| 性感av在线播放| caoliu在线| 亚洲一区二区三区四区五区xx| 国产一区一区三区| 日本一区二区三区视频在线观看| 国产主播喷水一区二区| 55夜色66夜色国产精品视频| 日韩在线观看精品| 亚洲一区二区国产| 亚洲国产精品va在看黑人| 91精品国产色综合久久久蜜香臀| 色婷婷香蕉在线一区二区| 亚洲妇熟xx妇色黄| 亚洲免费观看高清在线观看| 久久精品亚洲精品国产欧美| 99麻豆久久久国产精品免费优播| 国产麻豆精品视频| 久久99九九99精品| 麻豆精品视频在线| 日本vs亚洲vs韩国一区三区二区 | 黄页免费在线观看| 羞羞在线视频| 日韩欧美国产片| 国产视频手机在线播放| 免费在线观看亚洲视频 | 精品中文字幕一区二区三区| 欧美日韩免费看片| 网友自拍亚洲| 亚洲高清黄色| 123成人网| 国产精品xxx| 国产韩日精品| 亚洲天堂网站| 欧洲一区在线| 久久1电影院| 欧美精选一区二区三区| 日韩www.| 中文字幕一区二区av | 亚洲香蕉伊在人在线观| 中文字幕一区二区在线播放| 国产精品短视频| 亚洲精品伦理在线| 亚洲电影中文字幕在线观看| 精品露脸国产偷人在视频| 欧美日韩国产色视频| 在线观看成人小视频| 在线91免费看| 亚洲高清不卡av| 一本色道久久综合狠狠躁篇怎么玩| 亚洲欧美精品一区二区| 国产一区二区日韩| 久久精品精品电影网| 欧美激情极品视频| 日本最新高清不卡中文字幕| 国产日韩欧美91| 国产综合精品一区二区三区| 日本不卡高清视频一区| 福利在线小视频| 欧美成人免费高清视频| 草裙成人精品一区二区三区 | 欧美高清性xxxxhd| 综合操久久久| av天堂永久资源网| 黄色三级电影网站| 欧美日韩伦理片| 天堂av中文在线| 亚洲mmav| 香蕉久久精品日日躁夜夜躁| 一区二区三区四区日韩| 日韩专区一卡二卡| 91女人视频在线观看| 亚洲精品日日夜夜| 欧美日韩极品在线观看一区| 国产视频亚洲视频| 98视频在线噜噜噜国产| 91嫩草免费看| 国产大尺度在线观看| 91人人澡人人爽人人精品| 在线国产三级| av影视在线看| 给我免费播放日韩视频| 亚洲国产精品久久久久蝴蝶传媒| 亚洲永久在线| 97精品久久久午夜一区二区三区 | 玖玖玖视频精品| 日韩中文在线电影| 久久久久国产精品午夜一区| 国产不卡高清在线观看视频| 中文字幕亚洲不卡| 欧美日韩精品久久久| 在线观看日韩视频| 国产精品成人一区二区三区吃奶| 精品日产一区2区三区黄免费| 久久久久99精品成人片| 理论视频在线观看| 在线欧美三级| 一区二区三区高清在线观看| 欧美日韩一区二区国产| 成人免费视频免费观看| 亚洲成av人片观看| 精品伊人久久97| 国产成人综合久久| 亚洲巨乳在线观看| 777永久免费网站国产| 日本h片在线观看| 亚洲大片精品免费| 免费黄网站欧美| 亚洲一区二区视频在线观看| 日韩av一区在线观看| 国产精品白嫩美女在线观看 | 亚洲欧洲自拍偷拍| 国产精品十八以下禁看| 一区二区精品视频| 国产字幕中文| 国产精品13p| 99精品视频在线观看播放| 国产精品91一区二区| 婷婷综合另类小说色区| 国产一区二区久久精品| 亚洲aⅴ日韩av电影在线观看 | 在线观看久久久久久| 亚洲综合av影视| 国产精品久久久久9999小说| 黄色免费在线网站| 猛男gaygay欧美视频| 国产伦精品一区二区三区免费迷|