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

Java 日志管理的黃金組合: SLF4J+Logback

開發 前端
Log4J 最初是基于Java開發的日志框架,發展一段時間后,作者Ceki Gülcü將Log4j捐獻給了Apache軟件基金會,使之成為了Apache日志服務的一個子項目。 又由于Log4J出色的表現,后續又被孵化出了支持C, C++, C#, Perl, Python, Ruby等語言的子框架。

Log4J、Log4J2和LogBack的歷史故事

使用過Log4J和LogBack的同學肯定能發現,這兩個框架的設計理念極為相似,使用方法也如出一轍。其實這個兩個框架的作者都是一個人,Ceki Gülcü,俄羅斯程序員。

Log4J 最初是基于Java開發的日志框架,發展一段時間后,作者Ceki Gülcü將Log4j捐獻給了Apache軟件基金會,使之成為了Apache日志服務的一個子項目。 又由于Log4J出色的表現,后續又被孵化出了支持C, C++, C#, Perl, Python, Ruby等語言的子框架。

然而,偉大的程序員好像都比較有個性。Ceki Gülcü由于不滿Apache對Log4J的管理,決定不再參加Log4J的開發維護。“出走”后的Ceki Gülcü另起爐灶,開發出了LogBack這個框架(SLF4J是和LogBack一起開發出來的)。LogBack改進了很多Log4J的缺點,在性能上有了很大的提升,同時使用方式幾乎和Log4J一樣,許多用戶開始慢慢開始使用LogBack。

由于受到LogBack的沖擊,Log4J開始式微。終于,2015年9月,Apache軟件基金業宣布,Log4j不在維護,建議所有相關項目升級到Log4j2。Log4J2是Apache開發的一個新的日志框架,改進了很多Log4J的缺點,同時也借鑒了LogBack,號稱在性能上也是完勝LogBack。性能這塊后面我會仔細分析。

那slf4j和這些有什么關系?

SLF4J的全稱是Simple Logging Facade for Java,slf4j是門面模式的典型應用。

回答這個問題之前,我們先看看如果需要用上面幾個日志框架來打印日志,一般怎么做,具體代碼如下:

// 使用log4j,需要log4j.jar 
import org.apache.log4j.Logger; 
Logger logger_log4j = Logger.getLogger(Test.class); 
logger_log4j.info("Hello World!"); 

// 使用log4j2,需要log4j-api.jar、log4j-core.jar 
import org.apache.logging.log4j.LogManager; 
import org.apache.logging.log4j.Logger; 
Logger logger_log4j2 = LogManager.getLogger(Test.class); 
logger_log4j2.info("Hello World!"); 

// logback,需要logback-classic.jar、logback-core.jar 
import ch.qos.logback.classic.Logger; 
import ch.qos.logback.classic.LoggerContext; 
Logger logger_logback = new LoggerContext().getLogger(Test.class); logger_logback.info("Hello World!");

從上面不難看出,使用不同的日志框架,就要引入不同的jar包,使用不同的代碼獲取Logger。如果項目升級需要更換不同的框架,那么就需要修改所有的地方來獲取新的Logger,這將會產生巨大的工作量。

基于此,我們需要一種接口來將不同的日志框架的使用統一起來,這也是為什么要使用slf4j的原因。

SLF4J,即簡單日志門面(Simple Logging Facade for Java),不是具體的日志解決方案,它只服務于各種各樣的日志系統。按照官方的說法,SLF4J是一個用于日志系統的簡單Facade,允許最終用戶在部署其應用時使用其所希望的日志系統。


注意:類似的日志門面還有Jakarta Common logging(JCL),主要區別在于,SLF4J是一個比較新的日志框架,它更加靈活,性能更好,支持更多的日志實現,而且JCL基于classLoader在運行時動態加載日志框架,可能會產生很多意想不到的安全問題。

通過上面的介紹,我們可以知道JCL和SLF4J都是日志門面(Facade),而Log4J、Log4J2和LogBack都是子系統角色(SunSystem),也就是具體的日志實現框架。他們的關系如下,JUL是JDK本身提供的一種實現。

圖片圖片

SLF4J 的核心價值在于它提供了解耦設計:應用程序代碼只依賴 slf4j-api,而具體日志實現(如 Logback、Log4j2)可以在部署時動態綁定。這種架構使得項目升級或更換日志框架變得非常簡單,無需修改業務代碼中的日志記錄語句。

slf4j怎么和日志框架結合使用?

使用slf4j后,當我們在打印日志時,就可以使用下面的方式:

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
Logger logger = LoggerFactory.getLogger(Test.class); 
logger.info("Hello World!")

這又引入了另外一個問題,slf4j如何決定使用哪個框架日志呢,并且引入哪些jar包呢?官方為我們準備了組合依賴:

  • slf4j + logback: slf4j-api.jar + logback-classic.jar + logback-core.jar
  • slf4j + log4j: slf4j-api.jar + slf4j-log412.jar + log4j.jar
  • slf4j + jul: slf4j-api.jar + slf4j-jdk14.jar
  • 也可以只用slf4j無日志實現:slf4j-api.jar + slf4j-nop.jar

SLF4J 的基本使用

在代碼中使用 SLF4J 非常簡單,首先需要通過 Maven 添加依賴:

<!-- Maven 依賴配置 -->
<dependencies>
    <!-- SLF4J API -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>2.0.9</version>
    </dependency>
    <!-- Logback Classic 實現 -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.4.11</version>
    </dependency>
</dependencies>

在代碼中獲取 Logger 并記錄日志:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ExampleService {
    // 獲取Logger實例
    private static final Logger logger = LoggerFactory.getLogger(ExampleService.class);
    
    public void processUser(String userId) {
        logger.debug("Processing user: {}", userId); // 使用占位符,避免字符串拼接
        logger.info("User processing started");
        
        try {
            // 業務邏輯
            logger.info("User {} processed successfully", userId);
        } catch (Exception e) {
            logger.error("Failed to process user: " + userId, e); // 記錄異常信息
        }
    }
}

SLF4J 的 參數化日志消息(使用 {}占位符)是其一個重要特性,它不僅有更好的可讀性,還能提升性能——當日志級別高于當前配置時(如配置為 INFO 級別時調用 debug 語句),不會執行字符串拼接操作。

Logback 架構與核心組件

Logback 是 SLF4J 的原生實現框架,由三個相互協作的模塊組成,每個模塊都有獨特的功能定位。

Logback 的模塊化設計

模塊

說明

logback-core

核心模塊,提供基礎日志服務,其他兩個模塊都依賴它

logback-classic

實現 SLF4J API,完全兼容 SLF4J 接口,同時兼容 Log4j

logback-access

與 Servlet 容器集成,用于 HTTP 訪問日志記錄

Logback 相比 Log4j 有顯著性能提升,特別是在異步日志記錄方面,減少了線程阻塞和上下文切換開銷。它還支持自動重載配置,可以在不重啟應用的情況下修改日志配置。

Logback 核心概念

Logback 架構基于三個核心概念:Logger、Appender 和 Layout/Encoder。

Logger(日志記錄器)

  • 采用層次化命名(如 com.example.service.UserService
  • 具有繼承性:子 Logger 繼承父 Logger 的 Appender 和 Level
  • 通過 LoggerFactory.getLogger()獲取實例

Appender(輸出目的地)

Appender 負責將日志事件發送到不同目標,Logback 支持多種 Appender:

Appender 類型

說明

ConsoleAppender

輸出到控制臺

FileAppender

輸出到文件

RollingFileAppender

滾動文件(按大小/時間)

SocketAppender

發送到遠程服務器

SMTPAppender

郵件告警

KafkaAppender

發送到 Kafka(需擴展)

Layout/Encoder(格式化器)

定義日志輸出格式,常用占位符包括:

  • %d{yyyy-MM-dd HH:mm:ss.SSS}:時間戳
  • %level:日志級別
  • %thread:線程名
  • %logger{36}:Logger 名(縮寫)
  • %msg:日志消息
  • %n:換行符

Logback 配置詳解與案例

Logback 支持 XML 和 Groovy 兩種配置格式,其中 XML 是最常用的方式。下面通過實際案例詳細講解 Logback 的配置。

基礎配置結構

Logback 配置文件通常命名為 logback.xml或 logback-spring.xml(Spring 環境),放置在 src/main/resources/目錄下。

<?xml versinotallow="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
    
    <!-- 定義變量 -->
    <property name="LOG_HOME" value="./logs"/>
    <property name="APP_NAME" value="myapp"/>
    
    <!-- 開發環境開關 -->
    <springProfile name="dev">
        <property name="LOG_LEVEL" value="DEBUG"/>
    </springProfile>
    <springProfile name="prod">
        <property name="LOG_LEVEL" value="INFO"/>
    </springProfile>
    
    <!-- 控制臺輸出 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    
    <!-- 更多Appender配置 -->
    
    <!-- 根日志器 -->
    <root level="${LOG_LEVEL:-INFO}">
        <appender-ref ref="CONSOLE"/>
    </root>
    
    <!-- 特定包的日志級別 -->
    <logger name="com.example.service" level="DEBUG"/>
</configuration>

Console Appender 配置

Console Appender 用于將日志輸出到控制臺,是開發環境中最常用的 Appender:

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
    <!-- 過濾器:只輸出INFO及以上級別 -->
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>INFO</level>
    </filter>
</appender>

File Appender 與滾動策略

生產環境中通常需要將日志輸出到文件,并使用滾動策略防止文件過大:

<!-- 滾動文件輸出(按天) -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_HOME}/${APP_NAME}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- 每天生成一個文件 -->
        <fileNamePattern>${LOG_HOME}/archive/%d{yyyy-MM-dd}/${APP_NAME}.%i.log.gz</fileNamePattern>
        <!-- 保留30天 -->
        <maxHistory>30</maxHistory>
        <!-- 單個文件最大100MB -->
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>100MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>

日志級別配置

Logback 支持多個日志級別,合理配置級別對系統性能和可觀測性至關重要。

<!-- 根日志器設置 -->
<root level="${LOG_LEVEL:-INFO}">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="FILE"/>
</root>

<!-- 特定包/類級別設置 -->
<!-- 特定日志器:將 com.example.service 包的日志級別設為 DEBUG,且日志僅輸出到文件,不傳遞給根日志器(避免控制臺重復輸出) -->
<logger name="com.example.service" level="DEBUG" additivity="false">
    <appender-ref ref="FILE" />
</logger>

<!-- 特定日志器:將 org.springframework 包的日志級別設為 WARN,減少不必要的日志輸出 -->
<logger name="org.springframework" level="WARN" />

在這個配置中:

  • 絕大多數日志遵循根的 INFO級別設置。
  • 唯獨 com.example.service包下的日志可以輸出 DEBUG級別及以上的內容,并且這些調試信息只寫入文件,不會出現在控制臺(因為 additivity="false")。
  • 所有來自 org.springframework包的日志,只有 WARN和 ERROR級別才會被記錄。

根日志器 (<root>) 和特定包/類日志器 (<logger>) 的設置是日志配置的兩個核心層面,主要在于作用和范圍的區別:

特性

根日志器 (<root>)

特定包/類日志器 (<logger>)

作用范圍

全局默認

。影響所有未被特定 <logger>明確配置的日志記錄器。

局部特定

。僅影響通過 name屬性指定的包或類及其子包/子類。

配置目的

設置應用程序的基礎日志級別和輸出策略

特定模塊提供更精細的日志控制(如更詳細或更嚴格的級別)。

繼承性

是所有日志器層次的根節點,其他日志器默認繼承其配置。

從其父日志器(可能是根或其他上層日志器)繼承未被自身覆蓋的設置。

常用級別

生產環境常設為 INFO或 WARN;開發環境可設為 DEBUG

根據需求靈活設置,如將關注模塊設為 DEBUG,將嘈雜的第三方庫設為 ERROR

Logback 支持的日志級別從低到高依次為:

  • TRACE:最細粒度的信息,通常只在開發過程中使用
  • DEBUG:logger.debug信息
  • INFO:logger.info 信息
  • WARN:logger.warn 信息
  • ERROR:logger.error 信息

高級特性與性能優化

Logback 提供了多種高級功能,可以滿足復雜場景下的日志需求。

MDC(Mapped Diagnostic Context)

MDC 用于在日志中添加上下文信息(如請求 ID、用戶 ID),非常適合分布式系統跟蹤:

// 在代碼中使用MDC
import org.slf4j.MDC;

public class UserService {
    public void processUserRequest(String userId, String requestId) {
        // 將上下文信息放入MDC
        MDC.put("userId", userId);
        MDC.put("requestId", requestId);
        
        logger.info("Processing user request"); // 自動包含MDC信息
        
        // 業務處理...
        
        // 清理MDC
        MDC.clear();
    }
}

在配置中使用 MDC:

<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{userId}] [%X{requestId}] %-5level %logger{36} - %msg%n</pattern>

異步日志提升性能

對于生產環境,特別是高并發場景,使用異步日志可以顯著提升性能。

<!-- 異步日志(提升性能) -->
<appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
    <appender-ref ref="FILE"/>
    <!-- 隊列大小 -->
    <queueSize>256</queueSize>
    <!-- 丟棄級別低于ERROR的日志(可選) -->
    <discardingThreshold>0</discardingThreshold>
</appender>

條件化配置

Logback 支持根據不同的環境(如開發、測試、生產)使用不同的配置。

<!-- 開發環境配置 -->
<springProfile name="dev">
    <root level="DEBUG">
        <appender-ref ref="CONSOLE"/>
    </root>
</springProfile>

<!-- 生產環境配置 -->
<springProfile name="prod">
    <root level="INFO">
        <appender-ref ref="ASYNC_FILE"/>
    </root>
</springProfile>

自定義過濾器

Logback 允許創建自定義過濾器來實現復雜的日志過濾邏輯。

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 只記錄ERROR級別日志 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>ERROR</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
</appender>


責任編輯:武曉燕 來源: SevenCoding
相關推薦

2013-02-20 09:42:34

JavaLogbackSLF4J

2020-01-07 10:06:26

Slf4jLog4JLogback

2023-10-28 16:19:18

Android日志

2023-08-14 23:23:56

2024-06-11 08:50:43

xlwingsPython庫Excel

2023-11-09 08:28:06

DDDCQRS黃金組合

2024-03-01 16:52:02

SLF4J日志框架

2025-05-20 03:00:00

2025-03-03 08:49:59

2009-06-22 16:19:27

無線路由器產品華碩

2021-04-02 07:58:36

LogbackLog4j2日志

2020-11-04 12:33:08

Log4j 2日志Logback

2021-03-15 18:47:25

日志開發源碼

2022-08-30 16:38:30

阿里巴巴JavaLog4j

2025-08-20 09:34:57

2023-01-11 21:22:32

Java服務器

2023-10-07 10:08:54

2023-05-06 07:51:22

JavaFacade設計模式

2016-10-21 13:10:18

javalog4jslf4j

2022-05-12 11:38:26

Java日志Slf4j
點贊
收藏

51CTO技術棧公眾號

舐め犯し波多野结衣在线观看| 亚洲欧美一二三| 天天干天天操天天爱| 欧美gvvideo网站| 日韩欧美中文字幕制服| 国产日韩av网站| sese一区| 成人免费视频caoporn| 日韩免费观看av| 欧美精品videos极品| 国产一区二区三区日韩精品| 日韩欧美一级在线播放| av片中文字幕| 怡红院在线观看| 欧美激情综合在线| 精品国产一区二区三区四区精华| 亚洲天堂久久久久| 亚洲国产日本| 久久视频精品在线| 蜜臀久久99精品久久久久久| 国产精品成人自拍| 在线视频一区二区免费| 3d动漫一区二区三区| 国产原创在线观看| 欧美国产精品久久| 欧美aaaaa喷水| 内射后入在线观看一区| 久久精品国产**网站演员| 性欧美xxxx交| 亚洲国产美女视频| 欧美顶级大胆免费视频| 国产亚洲成精品久久| 青青草视频成人| 7m精品国产导航在线| 欧美精品免费视频| 狠狠热免费视频| 国产精品迅雷| 激情av一区二区| 欧美中日韩在线| 综合图区亚洲| 亚洲少妇最新在线视频| 亚洲午夜在线观看| 触手亚洲一区二区三区| 国产片一区二区| 欧美xxxx黑人又粗又长精品| 欧美美女搞黄| 91婷婷韩国欧美一区二区| 国产日韩一区欧美| 色婷婷中文字幕| 成人精品高清在线| 国产一区二区不卡视频| 成 人 免费 黄 色| 成人自拍视频在线观看| 懂色av一区二区三区在线播放| 国产福利免费视频| 国产精品99久久久久久有的能看| 91香蕉国产在线观看| 一区二区三区日| 久久99国产精品久久| 成人黄色免费看| 国产精品嫩草影院桃色| 狠狠色伊人亚洲综合成人| 国产精品爽黄69天堂a| 在线亚洲欧美日韩| 极品少妇xxxx偷拍精品少妇| 91丨九色丨国产在线| h狠狠躁死你h高h| 国产**成人网毛片九色 | 久久草视频在线| 99国产精品99久久久久久粉嫩| 欧美一区二区.| 激情网站在线观看| 久久电影网站中文字幕| 69堂成人精品视频免费| 色一情一乱一乱一区91av| 99精品热视频| 亚洲视频导航| 怡红院av在线| 一本到高清视频免费精品| 九热视频在线观看| 欧美经典影片视频网站| 亚洲精品国产精品国自产在线| 亚洲黄色在线网站| 欧美老女人另类| 欧美丰满老妇厨房牲生活 | 国产精品刘玥久久一区| 亚洲国产精品久久不卡毛片 | 国精产品一区一区三区mba桃花 | 午夜欧美大尺度福利影院在线看 | 黑人巨大精品欧美一区| 成人做爰66片免费看网站| 撸视在线观看免费视频| 1024精品合集| 日韩欧美亚洲天堂| 欧美三级电影网址| 亚洲激情在线视频| 日日碰狠狠添天天爽| 亚洲精选国产| 成人性教育视频在线观看| 污视频在线免费观看| 亚洲欧美综合在线精品| 九色在线视频观看| 秋霞影院一区| 国产亚洲激情视频在线| 久久久精品国产sm调教网站| 免费黄网站欧美| 国产精品日韩一区二区| 无遮挡动作视频在线观看免费入口 | 欧美乱妇20p| 中文字幕影片免费在线观看| 婷婷综合在线| 国产不卡精品视男人的天堂 | 国产午夜精品久久久| 97在线观看免费高| 久久亚洲风情| 国产欧美日本在线| 国产黄色在线免费观看| 91久久精品国产91性色tv| 催眠调教后宫乱淫校园| 999精品色在线播放| 日韩av电影中文字幕| 亚洲精品字幕在线观看| 中文字幕一区二区三区不卡在线 | 国产精品一区在线| 午夜精品视频在线观看一区二区| 美女扒开腿让男人桶爽久久软| 日韩一区二区三区精品视频 | 99久久.com| 国产精品美女呻吟| 成人影视在线播放| 色狠狠av一区二区三区| 97香蕉碰碰人妻国产欧美 | 国产精品久线观看视频| 欧美黄网站在线观看| 极品国产人妖chinesets亚洲人妖| 久久婷婷国产麻豆91天堂| 中文字字幕在线观看| 久久久久成人黄色影片| 日韩免费视频播放| 久久视频在线观看| 性色av香蕉一区二区| 午夜精品久久久久久久96蜜桃| 亚洲视频一二区| 精品国产鲁一鲁一区二区三区| 成人综合专区| 国产精品美女主播在线观看纯欲| 成人好色电影| 欧美色国产精品| 在线观看亚洲大片短视频| 日韩av二区在线播放| 日韩高清国产精品| 澳门av一区二区三区| 国产亚洲精品美女久久久久| 黄色一区二区视频| 国产精品久久久久9999吃药| 一区二区三区 欧美| 日本在线电影一区二区三区| 国产欧美精品一区二区| 求av网址在线观看| 91精品国产综合久久精品 | 好看不卡的中文字幕| 官网99热精品| 久久影院午夜精品| 亚洲午夜国产成人av电影男同| 小泽玛利亚一区二区三区视频| 国产精品视频在线看| 亚洲av无日韩毛片久久| 欧美日本不卡| 精品一区久久久| 欧洲成人一区| 色综合导航网站| 亚洲 另类 春色 国产| 91激情五月电影| 中文字幕av播放| 成人av电影在线观看| 国产精品99久久免费黑人人妻| 欧美呦呦网站| 成人女人免费毛片| 成人小电影网站| 精品国产一区二区三区在线观看| 国产亲伦免费视频播放| 精品久久久久久久久久久| 色欲AV无码精品一区二区久久| 国产一区激情在线| 九九九九免费视频| 婷婷亚洲五月| 精品欧美一区二区久久久伦| 国产一区影院| 韩日欧美一区二区| av在线电影观看| 欧美精品一区二区蜜臀亚洲| 亚洲国产精品无码久久久| 亚洲日本电影在线| 欧美特级黄色录像| 国产凹凸在线观看一区二区| 成人三级视频在线播放| 欧美精品九九| 亚洲精品一区二区三区av| 在线精品自拍| 国产中文日韩欧美| 成人爽a毛片免费啪啪| 欧美xxxx18性欧美| www.91在线| 精品网站999www| 99在线小视频| 欧美三级一区二区| 国产成人无码精品| 一区二区三区在线观看视频| 熟女少妇内射日韩亚洲| 白白色亚洲国产精品| 五月天开心婷婷| 日韩综合小视频| 精品视频在线观看一区| 天天精品视频| 亚洲不卡1区| julia中文字幕一区二区99在线| 国产欧美久久一区二区| 色戒汤唯在线| 97在线观看视频| 青春草视频在线观看| 精品国产美女在线| 在线中文资源天堂| 亚洲美女久久久| 四虎永久在线精品免费网址| 欧美一区二区三区在线电影| 亚洲一区二区激情| 欧美在线免费观看亚洲| 亚洲午夜18毛片在线看| 午夜亚洲福利老司机| 久久老司机精品视频| 亚洲黄色免费电影| 曰本女人与公拘交酡| 亚洲视频1区2区| 丝袜 亚洲 另类 欧美 重口| 国产精品国产三级国产aⅴ中文| 国产一区二区三区精品在线| 国产日韩在线不卡| 一色道久久88加勒比一| 久久亚洲综合av| 欧美性xxxx图片| 91美女片黄在线| 欧美黑人欧美精品刺激| av午夜一区麻豆| 制服丝袜第一页在线观看| 成人成人成人在线视频| 四虎永久免费观看| 国产美女在线精品| 日本一区二区三区在线免费观看| 黄一区二区三区| 可以看的av网址| 国产ts人妖一区二区| 免费不卡的av| 91色乱码一区二区三区| 粉嫩av蜜桃av蜜臀av| 国产日韩欧美精品电影三级在线 | 国产一区二区三区四区二区| 日韩中文一区二区三区| 手机亚洲手机国产手机日韩| 一区二区三区的久久的视频| 一区二区不卡| 97在线国产视频| 国产亚洲综合精品| 91看片就是不一样| 久久99热这里只有精品| 亚洲热在线视频| 99精品热视频| 日本污视频网站| 亚洲精品一二三| 国产一区二区三区影院| 在线亚洲人成电影网站色www| 一道本无吗一区| 日韩免费在线观看| 青青国产在线| www.国产一区| 69av成人| 国产日韩欧美在线观看| 一区二区三区视频免费视频观看网站 | 激情深爱综合网| 日本网站在线观看一区二区三区| 亚洲制服中文字幕| 成人avav影音| 五月婷婷六月香| 亚洲一区二区三区自拍| 无码人妻精品一区二区三区9厂 | 国内精品国产三级国产aⅴ久| va亚洲va日韩不卡在线观看| 老牛影视av老牛影视av| 最好看的中文字幕久久| 日韩av女优在线观看| 欧美日韩一区二区三区在线| 丰满人妻一区二区| 国产亚洲成av人片在线观看桃| 五月婷婷视频在线观看| 日本欧美中文字幕| 涩爱av色老久久精品偷偷鲁| 欧美久久在线| 在线看片成人| 成年网站免费在线观看| 91麻豆国产福利精品| 欧美日韩精品在线观看视频 | 在线观看的毛片| 成人性生交大合| 成人精品一二三区| 日韩欧美999| 亚洲黄色片视频| 日韩中文综合网| 人人视频精品| 国产欧美日韩伦理| 欧美二区视频| 中文字幕中文在线| 国产亚洲成av人在线观看导航| 欧美交换国产一区内射| 欧美精品日韩综合在线| 久热av在线| 欧美在线观看网址综合| 日韩最新av| 超碰成人在线免费观看| 日韩极品在线观看| 亚洲最大免费视频| 一卡二卡欧美日韩| 91在线你懂的| 一夜七次郎国产精品亚洲| 日韩精品美女| 国产精品久久久久久久小唯西川| 国产精品毛片一区二区在线看| 亚洲一二三区av| 久久免费精品国产久精品久久久久| 精品一区二区三区人妻| 欧美精品123区| 日本不卡不卡| 国产一区红桃视频| 成人影院在线| 欧美大尺度做爰床戏| 国产丝袜欧美中文另类| 日本高清不卡码| 国产丝袜一区二区| 欧美电影免费看| 日韩久久在线| 青草国产精品久久久久久| 最新中文字幕av| 欧美色视频在线观看| 思思99re6国产在线播放| 国产精品成人国产乱一区 | www.欧美| 亚洲 欧洲 日韩| 国产高清在线观看免费不卡| 卡通动漫亚洲综合| 日韩一区二区视频| 羞羞网站在线免费观看| 999热视频| 亚洲精品字幕| 久久精品无码一区| 欧美日韩一二三区| 免费av在线网址| 国产成人精品福利一区二区三区 | **欧美大码日韩| 午夜精品在线播放| 国内精品久久久久久久久| 美女视频免费精品| 99精品视频播放| 中文字幕一区二区日韩精品绯色| 国产乱码精品一区二区| 欧美国产第一页| 欧美精品第一区| 国产精品久久a| 一区二区三区在线视频观看| 天堂成人在线视频| 国产成人激情小视频| 久久久久电影| 你懂得在线视频| 欧美色窝79yyyycom| 成人看av片| 精品欧美一区二区在线观看视频| 麻豆九一精品爱看视频在线观看免费| 国产真人做爰视频免费| 日韩欧美中文一区二区| 欧美久久天堂| 亚洲日本无吗高清不卡| 国产99久久久国产精品免费看 | 欧美日韩精品一区二区三区| 综合久久2o19| 日本一区二区三区在线视频 | 免费看黄色av| 日韩欧美国产不卡| 美女写真久久影院| 国产精品igao激情视频| 久久久噜噜噜久久人人看| 国产精品天天操| 欧洲成人在线观看| 欧美在线1区| 韩国三级hd中文字幕| 精品日韩在线观看| 欧美电影在线观看网站| 蜜桃传媒一区二区三区| 最新不卡av在线| 免费在线观看一级毛片| 国产99视频精品免费视频36| 日本视频在线一区| aaa人片在线| 欧美刺激性大交免费视频|