<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    love fish大鵬一曰同風起,扶搖直上九萬里

    常用鏈接

    統計

    積分與排名

    friends

    link

    最新評論

    Log4j的介紹(轉)

    一、前言:
    ???? log4j (http://jakarta.apache.org/log4j/)是一個開放源碼項目,是廣泛使用的以Java編寫的日志記錄包。由于log4j出色的表現,當時在log4j完成時,log4j開發組織曾建議sun在jdk1.4中用log4j取代jdk1.4 的日志工具類,但當時jdk1.4已接近完成,所以sun拒絕使用log4j,當在java開發中實際使用最多的還是log4j,人們遺忘了sun的日志工具類.。它的一個獨有特性包括在類別中繼承的概念。通過使用類別層次結構,這樣就減少了日志記錄輸出量,并將日志記錄的開銷降到最低。
    ??
    ???? 它允許開發者控制以任意間隔輸出哪些日志語句。通過使用外部配置文件,完全可以在運行時進行配置。幾乎每個大的應用程序都包括其自己的日志記錄或跟蹤 API。經驗表明日志記錄是開發周期中的重要組成部分。同樣,日志記錄提供一些優點。首先,它可以提供運行應用程序的確切 上下文。一旦插入到代碼中,生成日志記錄輸出就不需要人為干涉。其次,日志輸出可以保存到永久媒體中以便以后研究。最后,除了在開發階段中使用,十分豐富的日志記錄包還可以用作審計工具。

    ??? 依照該規則,在 1996 年初,EU SEMPER(歐洲安全電子市場)項目就決定編寫自己的跟蹤 API。 在無數次改進、幾次具體化和許多工作之后,該 API 已經演變成 log4j,一種流行的 Java 日志記錄包。? 這個包按 IBM 公共許可證分發,由開放源碼權威機構認證。

    ??? 日志記錄有其自己的缺點。它會降低應用程序的速度。如果太詳細,它可能會使屏幕滾動變得看不見。? 為了減低這些影響,log4j 被設計成快速且靈活的。由于應用程序很少將日志記錄當作是主要功能,? log4j API 力爭易于了解和使用。
    ???? log4j,它可以控制以任意間隔輸出哪些日志語句。

    二、主要組件

    1、根類別(在類別層次結構的頂部,即全局性的日志級別)
    ?
    配置根Logger,其語法為:

    log4j.rootLogger = [ level ] , appenderName, appenderName, ...

    level 是日志記錄的類別
    appenderName就是指定日志信息輸出到哪個地方。您可以同時指定多個輸出目的地。

    類別level 為 OFF、FATAL、ERROR、WARN、INFO、DEBUG、log、ALL或自定義的優先級。
    og4j常用的優先級FATAL>ERROR>WARN>INFO>DEBUG
    配置根Logger,其語法為:
    log4j.rootLogger = [ level ] , appenderName, appenderName, …
    如果為log4j.rootLogger=WARN,則意味著只有WARN,ERROR,FATAL被輸出,DEBUG,INFO將被屏蔽掉。

    舉例:log4j.rootCategory=INFO,stdout,Runlog,Errorlog
    根日志類別為INFO,DEBUG將被屏蔽,其他的將被輸出。 stdout,Runlog,Errorlog分別為3個輸出目的地。

    ?2、常用輸出格式

    ?-X號:X信息輸出時左對齊;
    ?%p:日志信息級別
    ?%d{}:日志信息產生時間
    ?%c:日志信息所在地(類名)
    ?%m:產生的日志具體信息
    ?%n:輸出日志信息換行
    ?舉例:
    log4j.appender.stdout.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n
    log4j.appender.Runlog.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n
    log4j.appender.Errorlog.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n

    3、布局
    使用的輸出布局,其中log4j提供4種布局:
    org.apache.log4j.HTMLLayout(以HTML表格形式布局)
    org.apache.log4j.PatternLayout(可以靈活地指定布局模式),
    org.apache.log4j.SimpleLayout(包含日志信息的級別和信息字符串),
    org.apache.log4j.TTCCLayout(包含日志產生的時間、線程、類別等等信息)

    舉例:
    輸出格式為HTML表格
    log4j.appender.stdout.layout=org.apache.log4j.HTMLLayout

    輸出格式為可以靈活地指定布局模式
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

    輸出格式為包含日志信息的級別和信息字符串
    log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout

    輸出格式為包含日志產生的時間、線程、類別等等信息
    log4j.appender.stdout.layout=org.apache.log4j.TTCCLayout


    4、目的地

    配置日志信息輸出目的地Appender,其語法為


    log4j.appender.appenderName = fully.qualified.name.of.appender.class
    log4j.appender.appenderName.option1 = value1
    ...
    log4j.appender.appenderName.option = valueN
    appenderName就是指定日志信息輸出到哪個地方。您可以同時指定多個輸出目的地。

    log4j支持的輸出目的地:
    org.apache.log4j.ConsoleAppender 控制臺
    org.apache.log4j.FileAppender 文件
    org.apache.log4j.DailyRollingFileAppender 每天產生一個日志文件
    org.apache.log4j.RollingFileAppender (文件大小到達指定尺寸的時候產生一個新的文件),
    org.apache.log4j.WriterAppender (將日志信息以流格式發送到任意指定的地方)
    org.apache.log4j.net.SMTPAppender 郵件
    org.apache.log4j.jdbc.JDBCAppender 數據庫
    其他如:GUI組件、甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等

    舉例:


    輸出到控制臺
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender(指定輸出到控制臺)
    log4j.appender.Threshold=DEBUG(指定輸出類別)
    log4j.appender.CONSOLE.Target=System.out
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout(指定輸出布局)
    log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(指定輸出格式)

    輸出到文件

    ?? log4j.appender.FILE=org.apache.log4j.FileAppender(指定輸出到文件)
    ?? log4j.appender.FILE.File=file.log(指定輸出的路徑及文件名)
    ?? log4j.appender.FILE.Append=false
    ?? log4j.appender.FILE.layout=org.apache.log4j.PatternLayout(指定輸出的布局)
    ?? log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(指定輸出的格式)

    輸出到文件(輪換"日志文件",當日志文件達到指定大小時,該文件就被關閉并備份,然后創建一個新的日志文件)

    ? log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender(指定輸出到文件)
    ? log4j.appender.ROLLING_FILE.Threshold=ERROR(指定輸出類別)
    ? log4j.appender.ROLLING_FILE.File=rolling.log(指定輸出的路徑及文件名)
    ? log4j.appender.ROLLING_FILE.Append=true
    ? log4j.appender.ROLLING_FILE.MaxFileSize=10KB(指定輸出到文件的大小)
    ? log4j.appender.ROLLING_FILE.MaxBackupIndex=1
    ? log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout(指定采用輸出布局)
    ? log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(指定采用輸出格式)

    輸出到Socket
    ?log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender(指定輸出到Socket)
    ?log4j.appender.SOCKET.RemoteHost=localhost(遠程主機)
    ?log4j.appender.SOCKET.Port=5001(遠程主機端口)
    ?log4j.appender.SOCKET.LocationInfo=true
    ?log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout(布局)
    ?log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n(輸出格式)

    輸出到郵件
    log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender(指定輸出到郵件)
    ?log4j.appender.MAIL.Threshold=FATAL
    ?log4j.appender.MAIL.BufferSize=10
    ?log4j.appender.MAIL.From=chunkyo@163.com(發件人)
    ?log4j.appender.MAIL.SMTPHost=mail.hollycrm.com(SMTP服務器)
    ?log4j.appender.MAIL.Subject=Log4J Message
    ?log4j.appender.MAIL.To=chunkyo@163.com(收件人)
    ?log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout(布局)
    ?log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(格式)

    ?

    輸出到數據庫
    ?log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender(指定輸出到數據庫)
    ?log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test(指定數據庫URL)
    ?log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver(指定數據庫driver)
    ?log4j.appender.DATABASE.user=root(指定數據庫用戶)
    ?log4j.appender.DATABASE.password=root(指定數據庫用戶密碼)
    ?log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')(組織SQL語句)
    ?log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout(布局)
    ?log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(格式)

    5、日志類別補充
    有時我們需要對某個特定的部分指定有別于根類別的日志類別,可以指定某個包的優先級
    如:
    ? log4j.category.com.neusoft.mbip.dm.util=ERROR ,其中com.neusoft.mbip.dm.util為我們需要特別指定日志類別的部分。
    ?
    ? 或者可以指定輸出文件的優先級
    ? log4j.appender.Errorlog.Threshold=ERROR
    ?
    三、 常用log4j配置?

    常用log4j配置,一般可以采用兩種方式,.properties和.xml,下面舉兩個簡單的例子:

    1、log4j.properties

    ### 設置org.zblog域對應的級別INFO,DEBUG,WARN,ERROR和輸出地A1,A2 ##
    log4j.category.org.zblog=ERROR,A1
    log4j.category.org.zblog=INFO,A2

    log4j.appender.A1=org.apache.log4j.ConsoleAppender
    ### 設置輸出地A1,為ConsoleAppender(控制臺) ##
    log4j.appender.A1.layout=org.apache.log4j.PatternLayout
    ### 設置A1的輸出布局格式PatterLayout,(可以靈活地指定布局模式)##
    log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
    ### 配置日志輸出的格式##

    log4j.appender.A2=org.apache.log4j.RollingFileAppender
    ### 設置輸出地A2到文件(文件大小到達指定尺寸的時候產生一個新的文件)##
    log4j.appender.A2.File=E:/study/log4j/zhuwei.html
    ### 文件位置##
    log4j.appender.A2.MaxFileSize=500KB
    ### 文件大小##
    log4j.appender.A2.MaxBackupIndex=1
    log4j.appender.A2.layout=org.apache.log4j.HTMLLayout
    ##指定采用html方式輸出

    2、log4j.xml

    <?xml version="1.0" encoding="GB2312" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="org.zblog.all" class="org.apache.log4j.RollingFileAppender">
    <!-- 設置通道ID:org.zblog.all和輸出方式:org.apache.log4j.RollingFileAppender -->
    ??? <param name="File" value="E:/study/log4j/all.output.log" /><!-- 設置File參數:日志輸出文件名 -->
    ??? <param name="Append" value="false" /><!-- 設置是否在重新啟動服務時,在原有日志的基礎添加新日志 -->
    ??? <layout class="org.apache.log4j.PatternLayout">
    ??????? <param name="ConversionPattern" value="%p (%c:%L)- %m%n" /><!-- 設置輸出文件項目和格式 -->
    ??? </layout>
    </appender>

    <appender name="org.zblog.zcw" class="org.apache.log4j.RollingFileAppender">
    ??? <param name="File" value="E:/study/log4j/zhuwei.output.log" />
    ??? <param name="Append" value="true" />
    ??? <param name="MaxFileSize" value="10240" /> <!-- 設置文件大小 -->
    ??? <layout class="org.apache.log4j.PatternLayout">
    ??????? <param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
    ??? </layout>
    </appender>

    <logger name="zcw.log"> <!-- 設置域名限制,即zcw.log域及以下的日志均輸出到下面對應的通道中 -->
    ??? <level value="debug" /><!-- 設置級別 -->
    ??? <appender-ref ref="org.zblog.zcw" /><!-- 與前面的通道id相對應 -->
    </logger>

    <root> <!-- 設置接收所有輸出的通道 -->
    ??? <appender-ref ref="org.zblog.all" /><!-- 與前面的通道id相對應 -->
    </root>

    </log4j:configuration>


    3、配置文件加載方法:

    import org.apache.log4j.Logger;
    import org.apache.log4j.PropertyConfigurator;
    import org.apache.log4j.xml.DOMConfigurator;

    public class Log4jApp {
    ??? public static void main(String[] args) {
    ??????? DOMConfigurator.configure("E:/study/log4j/log4j.xml");//加載.xml文件
    ??????? //PropertyConfigurator.configure("E:/study/log4j/log4j.properties");//加載.properties文件

    ??????? Logger log=Logger.getLogger("org.zblog.test");
    ??????? log.info("測試");
    ??? }
    }

    4、項目使用log4j
    在web應用中,可以將配置文件的加載放在一個單獨的servlet中,并在web.xml中配置該servlet在應用啟動時候加載。
    對于在多人項目中,可以給每一個人設置一個輸出通道,這樣在每個人在構建Logger時,用自己的域名稱,讓調試信
    息輸出到自己的log文件中。

    四、log4j配置舉例(properties)

    #log4j.rootLogger = [ level ] , appenderName, appenderName,
    #類別level 為 OFF、FATAL、ERROR、WARN、INFO、DEBUG、log、ALL或自定義的優先級
    #Log4j常用的優先級FATAL>ERROR>WARN>INFO>DEBUG

    #stdout為控制臺 ,Errorlog為錯誤記錄日志 ,
    log4j.rootCategory=INFO,stdout,Runlog,Errorlog


    #輸出的appender的格式為
    #log4j.appender.appenderName = fully.qualified.name.of.appender.class
    #log4j.appender.appenderName.option1 = value1
    #log4j.appender.appenderName.option = valueN
    #Log4j中appender支持的輸出
    #org.apache.log4j.ConsoleAppender 控制臺
    #org.apache.log4j.FileAppender 文件
    #org.apache.log4j.DailyRollingFileAppender 每天產生一個日志文件
    #org.apache.log4j.RollingFileAppender (文件大小到達指定尺寸的時候產生一個新的文件),
    #org.apache.log4j.WriterAppender (將日志信息以流格式發送到任意指定的地方)
    #org.apache.log4j.net.SMTPAppender 郵件
    #org.apache.log4j.jdbc.JDBCAppender 數據庫

    #定義輸出的形式
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.Runlog=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.Errorlog=org.apache.log4j.DailyRollingFileAppender


    #可以指定輸出文件的優先級
    log4j.appender.Errorlog.Threshold=ERROR

    #指定輸出的文件
    log4j.appender.Runlog.File=D:\\UserInfoSyn\\WebRoot\\WEB-INF\\runlog\\runlog.log
    log4j.appender.Errorlog.File=D:\\UserInfoSyn\\WebRoot\\WEB-INF\\errorlog\\errorlog.log


    #Log4j的layout布局
    #org.apache.log4j.HTMLLayout 以HTML表格形式布局
    #org.apache.log4j.PatternLayout 可以靈活地指定布局模式
    #org.apache.log4j.SimpleLayout? 包含日志信息的級別和信息字符串
    #org.apache.log4j.TTCCLayout??? 包含日志產生的時間、線程、類別等等信息

    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.Runlog.layout=org.apache.log4j.PatternLayout
    log4j.appender.Errorlog.layout=org.apache.log4j.PatternLayout

    #輸出格式,log4j javadoc org.apache.log4j.PatternLayout
    #-X號:X信息輸出時左對齊;
    #%p:日志信息級別
    # %d{}:日志信息產生時間
    # %c:日志信息所在地(類名)
    # %m:產生的日志具體信息
    # %n:%n:輸出日志信息換行
    log4j.appender.stdout.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n
    log4j.appender.Runlog.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n
    log4j.appender.Errorlog.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n

    #指定某個包的優先級
    log4j.category.com.neusoft.mbip.dm.util=ERROR


    #示例
    ###################
    # Console Appender
    ###################
    #log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    #log4j.appender.Threshold=DEBUG
    #log4j.appender.CONSOLE.Target=System.out
    #log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    #log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
    #log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n


    #####################
    # File Appender
    #####################
    #log4j.appender.FILE=org.apache.log4j.FileAppender
    #log4j.appender.FILE.File=file.log
    #log4j.appender.FILE.Append=false
    #log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    #log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
    # Use this layout for LogFactor 5 analysis

    ########################
    # Rolling File????? RollingFileAppender??????????????????
    ########################
    #log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
    #log4j.appender.ROLLING_FILE.Threshold=ERROR
    # 文件位置
    #log4j.appender.ROLLING_FILE.File=rolling.log
    #log4j.appender.ROLLING_FILE.Append=true
    #文件大小
    #log4j.appender.ROLLING_FILE.MaxFileSize=10KB
    #指定采用輸出布局和輸出格式
    #log4j.appender.ROLLING_FILE.MaxBackupIndex=1
    #log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
    #log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

    ####################
    # Socket Appender
    ####################
    #log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
    #log4j.appender.SOCKET.RemoteHost=localhost
    #log4j.appender.SOCKET.Port=5001
    #log4j.appender.SOCKET.LocationInfo=true
    # Set up for Log Facter 5
    #log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
    #log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n

    ########################
    # SMTP Appender
    #######################
    #log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
    #log4j.appender.MAIL.Threshold=FATAL
    #log4j.appender.MAIL.BufferSize=10
    #log4j.appender.MAIL.From=chunkyo@163.com
    #log4j.appender.MAIL.SMTPHost=mail.hollycrm.com
    #log4j.appender.MAIL.Subject=Log4J Message
    #log4j.appender.MAIL.To=chunkyo@163.com
    #log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
    #log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

    ########################
    # JDBC Appender
    #######################
    #log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
    #log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
    #log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
    #log4j.appender.DATABASE.user=root
    #log4j.appender.DATABASE.password=
    #log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
    #log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
    #log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

    ########################
    # Log Factor 5 Appender
    ########################
    #log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
    #log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000

    ###################
    #自定義Appender
    ###################
    #log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
    #log4j.appender.im.host = mail.cybercorlin.net
    #log4j.appender.im.username = username
    #log4j.appender.im.password = password
    #log4j.appender.im.recipient = chunkyo@163.com
    #log4j.appender.im.layout=org.apache.log4j.PatternLayout
    #log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n



    log4j 過濾日志級別
    Please see detail for logconfig.xml. For filter only support xml.

    You can use as following appender:

    org.apache.log4j.ConsoleAppender ConsoleAppender
    org.apache.log4j.FileAppender FileAppender
    org.apache.log4j.jdbc.JDBCAppender JDBCAppender
    org.apache.log4j.AsyncAppender AsyncAppender
    org.apache.log4j.net.JMSAppender JMSAppender
    org.apache.log4j.lf5.LF5Appender LF5Appender
    org.apache.log4j.nt.NTEventLogAppender NTEventLogAppender
    org.apache.log4j.varia.NullAppender NullAppender
    org.apache.log4j.net.SMTPAppender SMTPAppender
    org.apache.log4j.net.SocketAppender SocketAppender
    org.apache.log4j.net.SocketHubAppender SocketHubAppender
    org.apache.log4j.net.SyslogAppender SyslogAppender
    org.apache.log4j.net.TelnetAppender TelnetAppender
    org.apache.log4j.WriterAppender WriterAppender
    For only one level deal:
    You must user LevelRangeFilter and set LevelMin and LevelMax to the same level,

    Note:The value must uppercase.


    <filter class="org.apache.log4j.varia.LevelRangeFilter">
    <param name="LevelMin" value="ERROR" />
    <param name="LevelMax" value="ERROR" />
    </filter>

    posted on 2007-03-23 09:35 liaojiyong 閱讀(436) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: xxxxx做受大片视频免费| 鲁死你资源站亚洲av| 中国国产高清免费av片| 国产免费看插插插视频| 亚洲AV无码专区在线电影成人| 毛片a级毛片免费观看免下载 | xxxxxx日本处大片免费看| 国产男女性潮高清免费网站| 亚洲熟妇AV日韩熟妇在线| 日本黄色免费观看| 美国免费高清一级毛片| 亚洲精品国产V片在线观看| xxxxx做受大片视频免费| 亚洲AV无码码潮喷在线观看 | 亚洲av永久无码嘿嘿嘿| 四虎成人免费观看在线网址 | 又粗又黄又猛又爽大片免费| 高h视频在线免费观看| 国产亚洲一区区二区在线| 91免费国产视频| 亚洲综合一区二区| 免费观看理论片毛片| 亚州**色毛片免费观看| 亚洲午夜久久久久妓女影院| 久久午夜夜伦鲁鲁片免费无码| 亚洲性色高清完整版在线观看| 国内免费高清在线观看| 国产亚洲视频在线播放大全| 国产AV无码专区亚洲AV漫画| 久久大香香蕉国产免费网站| 亚洲国产精品综合久久20| 亚洲国产V高清在线观看| 中文无码成人免费视频在线观看| 亚洲熟妇无码久久精品| 永久久久免费浮力影院| 成人精品一区二区三区不卡免费看| 亚洲毛片基地日韩毛片基地| 国产国产人免费视频成69大陆 | 亚洲精品自产拍在线观看| 免费看男女下面日出水来| 亚洲国产欧洲综合997久久|