3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

非常完善的Log4net详细说明(转)

發布時間:2023/12/10 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 非常完善的Log4net详细说明(转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最可能來源:https://blog.csdn.net/ydm19891101/article/details/50561638

其它轉載者:http://www.cnblogs.com/zhangchenliang/p/4546352.html

1、概述

log4net是.Net下一個非常優秀的開源日志記錄組件。log4net記錄日志的功能非常強大。它可以將日志分不同的等級,以不同的格式,輸出到不同的媒介。本文主要是介紹如何在Visual Studio2008中使用log4net快速創建系統日志,如何擴展以輸出自定義字段。

?

2、一個簡單的使用實例

第一步:在項目中添加對log4net.dll的引用,這里引用版本是1.2.10.0。

第二步:程序啟動時讀取log4net的配置文件。

如果是CS程序,在根目錄的Program.cs中的Main方法中添加:

log4net.Config.XmlConfigurator.Configure();

如果是BS程序,在根目錄的Global.asax.cs(沒有新建一個)中的Application_Start方法中添加:

log4net.Config.XmlConfigurator.Configure();

無論BS還是CS程序都可直接在項目的AssemblyInfo.cs文件里添加以下的語句:

[assembly: log4net.Config .XmlConfigurator()]

也可以使用自定義的配置文件,具體請參見4.4?關聯配置文件。

第三步:修改配置文件。如果是CS程序,則在默認的App.config文件(沒有新建一個)中添加內容;如果是BS程序,則添加到Web.config文件中,添加內容一樣,這里不再列出。

App.config文件添加內容如下:

<?xml?version="1.0"?encoding="utf-8"??>

<configuration>

??<configSections>

<section?name="log4net"

type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"?/>

??</configSections>

?

??<log4net>

????<root>

??????<level?value="WARN"?/>

??????<appender-ref?ref="LogFileAppender"?/>

??????<appender-ref?ref="ConsoleAppender"?/>

????</root>

?

????<logger?name="testApp.Logging">

??????<level?value="DEBUG"/>

????</logger>

?

????<appender?name="LogFileAppender"?type="log4net.Appender.FileAppender"?>

??????<param?name="File"?value="log-file.txt"?/>

??????<param?name="AppendToFile"?value="true"?/>

?

??????<layout?type="log4net.Layout.PatternLayout">

????????<param?name="Header"?value="[Header]?"/>

????????<param?name="Footer"?value="[Footer]?"/>

????????<param?name="ConversionPattern"?value="%d [%t] %-5p %c [%x]??- %m%n"?/>

??????</layout>

?

??????<filter?type="log4net.Filter.LevelRangeFilter">

????????<param?name="LevelMin"?value="DEBUG"?/>

????????<param?name="LevelMax"?value="WARN"?/>

??????</filter>

????</appender>

?

????<appender?name="ConsoleAppender"??type="log4net.Appender.ConsoleAppender"?>

??????<layout?type="log4net.Layout.PatternLayout">

????????<param?name="ConversionPattern"??value="%d [%t] %-5p %c [%x] - %m%n"?/>

??????</layout>

????</appender>

?

??</log4net>

</configuration>

第四步:在程序使用。

log4net.ILog?log = log4net.LogManager.GetLogger("testApp.Logging");//獲取一個日志記錄器

log.Info(DateTime.Now.ToString() +?": login success");//寫入一條新log

這樣就將信息同時輸出到控制臺和寫入到文件名為“log-file.txt”的文件中,其中“log-file.txt”文件的路徑是當前程序運行所在目錄;也可以定義為絕對路徑,配置如:

<param?name="File"?value="C:/log-file.txt"?/>就寫入C盤根目錄下log-file.txt文件中,具體使用技巧參見4.2.1。

?

本例的實現請參見8.6附件。

3、Log4net的主要組成部分

3.1 Appenders

Appenders用來定義日志的輸出方式,即日志要寫到那種介質上去。較常用的Log4net已經實現好了,直接在配置文件中調用即可,可參見上面配置文件例子;當然也可以自己寫一個,需要從log4net.Appender.AppenderSkeleton類繼承。它還可以通過配置Filters和Layout來實現日志的過濾和輸出格式。

已經實現的輸出方式有:

AdoNetAppender?將日志記錄到數據庫中。可以采用SQL和存儲過程兩種方式。

AnsiColorTerminalAppender?將日志高亮輸出到ANSI終端。

AspNetTraceAppender??能用asp.net中Trace的方式查看記錄的日志。

BufferingForwardingAppender?在輸出到子Appenders之前先緩存日志事件。

ConsoleAppender?將日志輸出到應用程序控制臺。

EventLogAppender?將日志寫到Windows?Event?Log。

FileAppender?將日志輸出到文件。

ForwardingAppender?發送日志事件到子Appenders。

LocalSyslogAppender?將日志寫到local?syslog?service?(僅用于UNIX環境下)。

MemoryAppender?將日志存到內存緩沖區。

NetSendAppender?將日志輸出到Windows?Messenger?service.這些日志信息將在用戶終端的對話框中顯示。

OutputDebugStringAppender?將日志輸出到Debuger,如果程序沒有Debuger,就輸出到系統Debuger。如果系統Debuger也不可用,將忽略消息。

RemoteSyslogAppender?通過UDP網絡協議將日志寫到Remote?syslog?service。

RemotingAppender?通過.NET?Remoting將日志寫到遠程接收端。

RollingFileAppender?將日志以回滾文件的形式寫到文件中。

SmtpAppender?將日志寫到郵件中。

SmtpPickupDirAppender?將消息以文件的方式放入一個目錄中,像IIS SMTP agent這樣的SMTP代理就可以閱讀或發送它們。

TelnetAppender?客戶端通過Telnet來接受日志事件。

TraceAppender?將日志寫到.NET?trace?系統。

UdpAppender?將日志以無連接UDP數據報的形式送到遠程宿主或用UdpClient的形式廣播。

3.2 Filters

使用過濾器可以過濾掉Appender輸出的內容。過濾器通常有以下幾種:

DenyAllFilter?阻止所有的日志事件被記錄

LevelMatchFilter?只有指定等級的日志事件才被記錄

LevelRangeFilter?日志等級在指定范圍內的事件才被記錄

LoggerMatchFilter?與Logger名稱匹配,才記錄

PropertyFilter?消息匹配指定的屬性值時才被記錄

StringMathFilter?消息匹配指定的字符串才被記錄

3.3 Layouts

Layout用于控制Appender的輸出格式,可以是線性的也可以是XML。

一個Appender只能有一個Layout。

最常用的Layout應該是經典格式的PatternLayout,其次是SimpleLayout,RawTimeStampLayout和ExceptionLayout。然后還有IRawLayout,XMLLayout等幾個,使用較少。Layout可以自己實現,需要從log4net.Layout.LayoutSkeleton類繼承,來輸出一些特殊需要的格式,在后面擴展時就重新實現了一個Layout。

SimpleLayout簡單輸出格式,只輸出日志級別與消息內容。

RawTimeStampLayout?用來格式化時間,在向數據庫輸出時會用到。

樣式如“yyyy-MM-dd HH:mm:ss“

ExceptionLayout需要給Logger的方法傳入Exception對象作為參數才起作用,否則就什么也不輸出。輸出的時候會包含Message和Trace。

PatterLayout使用最多的一個Layout,能輸出的信息很多,使用方式可參見上面例子中的配置文件。PatterLayout的格式化字符串見文后附注8.1。

3.4 Loggers

Logger是直接和應用程序交互的組件。Logger只是產生日志,然后由它引用的Appender記錄到指定的媒介,并由Layout控制輸出格式。

Logger提供了多種方式來記錄一個日志消息,也可以有多個Logger同時存在。每個實例化的Logger對象對被log4net作為命名實體(Named Entity)來維護。log4net使用繼承體系,也就是說假如存在兩個Logger,名字分別為a.b.c和a.b。那么a.b就是a.b.c的祖先。每個Logger都繼承了它祖先的屬性。所有的Logger都從Root繼承,Root本身也是一個Logger。

日志的等級,它們由高到底分別為:

OFF?>?FATAL?>?ERROR?>?WARN?>?INFO?>?DEBUG? >?ALL?

高于等級設定值方法(如何設置參見“配置文件詳解”)都能寫入日志,?Off所有的寫入方法都不寫到日志里,ALL則相反。例如當我們設成Info時,logger.Debug就會被忽略而不寫入文件,但是FATAL,ERROR,WARN,INFO會被寫入,因為他們等級高于INFO。

在具體寫日志時,一般可以這樣理解日志等級:

FATAL(致命錯誤):記錄系統中出現的能使用系統完全失去功能,服務停止,系統崩潰等使系統無法繼續運行下去的錯誤。例如,數據庫無法連接,系統出現死循環。

ERROR(一般錯誤):記錄系統中出現的導致系統不穩定,部分功能出現混亂或部分功能失效一類的錯誤。例如,數據字段為空,數據操作不可完成,操作出現異常等。

WARN(警告):記錄系統中不影響系統繼續運行,但不符合系統運行正常條件,有可能引起系統錯誤的信息。例如,記錄內容為空,數據內容不正確等。

INFO(一般信息):記錄系統運行中應該讓用戶知道的基本信息。例如,服務開始運行,功能已經開戶等。

DEBUG?(調試信息):記錄系統用于調試的一切信息,內容或者是一些關鍵數據內容的輸出。

Logger實現的ILog接口,ILog定義了5個方法(Debug,Inof,Warn,Error,Fatal)分別對不同的日志等級記錄日志。這5個方法還有5個重載。以Debug為例說明一下,其它的和它差不多。

ILog中對Debug方法的定義如下:

void?Debug(object?message);

void?Debug(object?message,?Exception?ex);

還有一個布爾屬性:

bool?IsDebugEnabled {?get; }

如果使用Debug(object?message,?Exception?ex),則無論Layout中是否定義了%exception,默認配置下日志都會輸出Exception。包括Exception的Message和Trace。如果使用Debug(object message),則日志是不會輸出Exception。

最后還要說一個LogManager類,它用來管理所有的Logger。它的GetLogger靜態方法,可以獲得配置文件中相應的Logger:

log4net.ILog?log = log4net.LogManager.GetLogger("logger-name");

3.5 Object Renders

它將告訴logger如何把一個對象轉化為一個字符串記錄到日志里。(ILog中定義的接口接收的參數是Object,而不是String。)

例如你想把Orange對象記錄到日志中,但此時logger只會調用Orange默認的ToString方法而已。所以要定義一個OrangeRender類實現log4net.ObjectRender.IObjectRender接口,然后注冊它(我們在本文中的擴展不使用這種方法,而是直接實現一個自定義的Layout)。這時logger就會知道如何把Orange記錄到日志中了。

3.6 Repository

Repository主要用于日志對象組織結構的維護。

4、配置文件詳解

4.1?配置文件構成

主要有兩大部分,一是申明一個名為“log4net“的自定義配置節,如下所示:

??<configSections>

<section?name="log4net"

type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"?/>

??</configSections>

二是<log4net>節的具體配置,這是下面要重點說明的。

4.1.1<log4net>

所有的配置都要在<log4net>元素里定義。

支持的屬性:

debug

可選,取值是true或false,默認是false。設置為true,開啟log4net的內部調試。

update

可選,取值是Merge(合并)或Overwrite(覆蓋),默認值是Merge。設置為Overwrite,在提交配置的時候會重置已經配置過的庫。

threshold

可選,取值是repository(庫)中注冊的level,默認值是ALL。

支持的子元素:

appender

0或多個

logger

0或多個

renderer

0或多個

root

最多一個

param

0或多個

?

4.1.2?<root>

實際上就是一個根logger,所有其它logger都默認繼承它,如果配置文件里沒有顯式定義,則框架使用根日志中定義的屬性。root元素沒有屬性。

支持的子元素:

appender-ref

0個或多個,要引用的appender的名字。

level

最多一個。?只有在這個級別或之上的事件才會被記錄。

param

0個或多個,?設置一些參數。

?

4.1.3?<logger>

支持的屬性:

name

必須的,logger的名稱

additivity

可選,取值是true或false,默認值是true。設置為false時將阻止父logger中的appender。

支持的子元素:

appender-ref

0個或多個,要引用的appender的名字。

level

最多一個。?只有在這個級別或之上的事件才會被記錄。

param

0個或多個,?設置一些參數。

?

4.1.4?<appender>

定義日志的輸出方式,只能作為?log4net?的子元素。name屬性必須唯一,type屬性必須指定。

支持的屬性:

name

必須的,Appender對象的名稱

type

必須的,Appender對象的輸出類型

支持的子元素:

appender-ref

0個或多個,允許此appender引用其他appender,并不是所以appender類型都支持。

filter

0個或多個,定義此app使用的過濾器。

layout

最多一個。定義appender使用的輸出格式。

param

0個或多個,?設置Appender類中對應的屬性的值。

實際上<appender>所能包含的子元素遠不止上面4個。

?

4.1.5?<layout>

布局,只能作為<appender>的子元素。

支持的屬性:

type

必須的,Layout的類型

支持的子元素:

param

0個或多個,?設置一些參數。

?

4.1.6?<filter>

過濾器,只能作為<appender>的子元素。

支持的屬性:

type

必須的,Filter的類型

支持的子元素:

param

0個或多個,?設置一些參數。

?

4.1.7?<param>

<param>元素可以是任何元素的子元素。

支持的屬性:

name

必須的,取值是父對象的參數名。

value

可選的,value和type中,必須有一個屬性被指定。value是一個能被轉化為參數值的字符串。

type

可選的,value和type中,必須有一個屬性被指定。type是一個類型名,如果type不是在log4net程序集中定義的,就需要使用全名。

支持的子元素:

param

0個或多個,?設置一些參數。

?

4.2 <appender>配置

???<appender>在配置文件中至少有一個,也可以有多個,有些<appender>類型還可以引用其他<appender>類型,具體參數可參見上表。

下面只對寫入回滾文件與輸出到數據庫(這里使用SQL數據庫)配置體會說一下,其他配置可參考官方網站:http://logging.apache.org/log4net/release/config-examples.html

4.2.1寫入回滾文件

????<appender?name="ReflectionLayout"?type="log4net.Appender.RollingFileAppender,log4net">

<!--日志文件路徑,“/”與“/”作用相同,到達的目錄相同,文件夾不存在則新建?-->

<!--按文件大小方式輸出時在這里指定文件名,并且當天的日志在下一天時在文件名后自動追加當天日期形成新文件。-->

<!—按照日期形式輸出時,直接連接元素DatePattern的value形成文件路徑。此處使用這種方式?-->

<!--param的名稱,可以直接查對應的appender類的屬性名即可,這里要查的就是RollingFileAppender類的屬性?-->

??????<param?name="File"?value="D:/Log/"?/>

?

??????<!--是否追加到文件-->

??????<param?name="AppendToFile"?value="true"?/>

?

??????<!--記錄日志寫入文件時,不鎖定文本文件,防止多線程時不能寫Log,官方說線程非安全-->

??????<lockingModel?type="log4net.Appender.FileAppender+MinimalLock"?/>

?

??????<!—使用Unicode編碼-->

??????<Encoding?value="UTF-8"?/>

?

??????<!--最多產生的日志文件數,超過則只保留最新的n個。設定值value="-1"為不限文件數-->

??????<param?name="MaxSizeRollBackups"?value="10"?/>

?

??????<!--是否只寫到一個文件中-->

??????<param?name="StaticLogFileName"?value="false"?/>

?

??????<!--按照何種方式產生多個日志文件(日期[Date],文件大小[Size],混合[Composite])-->

??????<param?name="RollingStyle"?value="Composite"?/>

?

??????<!--按日期產生文件夾和文件名[在日期方式與混合方式下使用]-->

<!—此處按日期產生文件夾,文件名固定。注意&quot;?的位置-->

??????<param?name="DatePattern"?value="yyyy-MM-dd/&quot;ReflectionLayout.log&quot;"??/>

<!—這是按日期產生文件夾,并在文件名前也加上日期-->

??????<param name="DatePattern" value="yyyyMMdd/yyyyMMdd&quot;-TimerServer.log&quot;"??/>

<!—這是先按日期產生文件夾,再形成下一級固定的文件夾—>

??????<param name="DatePattern" value="yyyyMMdd/&quot;TimerServer/TimerServer.log&quot;"??/>

?

??????<!--每個文件的大小。只在混合方式與文件大小方式下使用。

超出大小后在所有文件名后自動增加正整數重新命名,數字最大的最早寫入。

可用的單位:KB|MB|GB。不要使用小數,否則會一直寫入當前日志-->

??????<param?name="maximumFileSize"?value="500KB"?/>

?

<!--計數類型為1,2,3…-->
??????<param?name="CountDirection"?value="1"/>

?

<!—過濾設置,LevelRangeFilter為使用的過濾器。?-->

??????<filter?type="log4net.Filter.LevelRangeFilter">

????????<param?name="LevelMin"?value="DEBUG"?/>

????????<param?name="LevelMax"?value="WARN"?/>

??????</filter>

?

??????<!--記錄的格式。一般用log4net.Layout.PatternLayout布局-->

<!—此處用繼承了log4net.Layout.PatternLayout的自定義布局,TGLog.ExpandLayout2

為命名空間。%property{Operator}、%property{Action}是自定義的輸出-->

??????<layout?type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">

????????<param?name="ConversionPattern"

?value="記錄時間:%date?線程ID:[%thread]?日志級別:%-5level?記錄類:%logger?????操作者ID:%property{Operator}?操作類型:%property{Action}%n?????????????當前機器名:%property%n當前機器名及登錄用戶:%username %n???????????????記錄位置:%location%n?消息描述:%property{Message}%n????????????????????異常:%exception%n?消息:%message%newline%n%n"?/>

??????</layout>

</appender>

注意這些配置屬性有些是可選的,如果需要,一定要寫正確,否則要么輸出的不是自己想要的結果,要么干脆不輸出任何信息。

4.2.1寫入SQL數據庫

需要在相應的數據庫中準備好一張表,創建語句如下:

CREATE TABLE [Log] (

[ID] [int] IDENTITY (1, 1) NOT NULL ,

[Date] [datetime] NOT NULL ,

[Thread] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,

[Level] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,

[Logger] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,

[Operator] [int] NULL ,

[Message] [text] COLLATE Chinese_PRC_CI_AS NULL ,

[ActionType] [int] NULL ,

[Operand] [varchar] (300) COLLATE Chinese_PRC_CI_AS NULL ,

[IP] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,

[MachineName] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,

[Browser] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

[Location] [text] COLLATE Chinese_PRC_CI_AS NULL ,

[Exception] [text] COLLATE Chinese_PRC_CI_AS NULL

)

<appender?name="ADONetAppender"?type="log4net.Appender.ADONetAppender,log4net">

<!--BufferSize為緩沖區大小,只有日志記錄超設定值才會一塊寫入到數據庫-->

<bufferSize?value="10"?/><!—或寫為<param name="BufferSize" value="10" />-->

?

<!--引用-->

<connectionType?value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"?/>

?

<!--連接數據庫字符串-->

<connectionString?value="data source=.;initial catalog=Test;integrated security=false;persist security info=True;User ID=sa;Password=;"?/>

?

<!--插入到表Log-->

<commandText?value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Operator],[Message],[ActionType],[Operand],[IP],[MachineName],[Browser],[Location],[Exception]) VALUES (@log_date, @thread, @log_level, @logger,@operator, @message,@action_type,@operand,@ip,@machineName,@browser,@location,@exception)"?/>

?

<!—日志記錄時間,RawTimeStampLayout為默認的時間輸出格式?-->

??????<parameter>

????????<parameterName?value="@log_date"?/>

????????<dbType?value="DateTime"?/>

????????<layout?type="log4net.Layout.RawTimeStampLayout"?/>

??????</parameter>

?

??????<!--線程號-->

??????<parameter>

????????<parameterName?value="@thread"?/>

????????<dbType?value="String"?/>

<!—長度不可以省略,否則不會輸出-->

????????<size?value="100"?/>

????????<layout?type="log4net.Layout.PatternLayout">

??????????<conversionPattern?value="%thread"?/>

????????</layout>

??????</parameter>

?

??????<!--日志等級-->

??????<parameter>

????????<parameterName?value="@log_level"?/>

????????<dbType?value="String"?/>

????????<size?value="100"?/>

????????<layout?type="log4net.Layout.PatternLayout">

??????????<conversionPattern?value="%level"?/>

????????</layout>

??????</parameter>

?

??????<!--日志記錄類名稱-->

??????<parameter>

????????<parameterName?value="@logger"?/>

????????<dbType?value="String"?/>

????????<size?value="200"?/>

????????<layout?type="log4net.Layout.PatternLayout">

??????????<conversionPattern?value="%logger"?/>

????????</layout>

??????</parameter>

?????

??????<!--操作者。這個是自定義的輸出字段,使用重新實現的布局器ReflectionLayout -->

??????<parameter>

????????<parameterName?value="@operator"?/>

<!—設置為Int32時只有bufferSize的?value<="1"才正確輸出,沒有找出原因。-->

????????<dbType?value="Int16"?/>

????????<layout?type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">

??????????<conversionPattern?value="%property{Operator}"?/>

????????</layout>

??????</parameter>

?

??????<!--操作對象-->

??????<parameter>

????????<parameterName?value="@operand"?/>

????????<dbType?value="String"?/>

????????<size?value="300"?/>

????????<layout?type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">

??????????<conversionPattern?value="%property{Operand}"?/>

????????</layout>

??????</parameter>

?

??????<!—IP地址-->

??????<parameter>

????????<parameterName?value="@ip"?/>

????????<dbType?value="String"?/>

????????<size?value="20"?/>

????????<layout?type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">

??????????<conversionPattern?value="%property{IP}"?/>

????????</layout>

??????</parameter>

?

??????<!--機器名-->

??????<parameter>

????????<parameterName?value="@machineName"?/>

????????<dbType?value="String"?/>

????????<size?value="100"?/>

????????<layout?type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">

??????????<conversionPattern?value="%property{MachineName}"?/>

????????</layout>

??????</parameter>

?

??????<!--瀏覽器-->

??????<parameter>

????????<parameterName?value="@browser"?/>

????????<dbType?value="String"?/>

????????<size?value="50"?/>

????????<layout?type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">

??????????<conversionPattern?value="%property{Browser}"?/>

????????</layout>

??????</parameter>

?????

??????<!—日志消息-->

??????<parameter>

????????<parameterName?value="@message"?/>

????????<dbType?value="String"?/>

????????<size?value="3000"?/>

????????<layout?type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">

??????????<conversionPattern?value="%property{Message}"?/>

????????</layout>

??????</parameter>

?

??????<!--動作類型-->

??????<parameter>

????????<parameterName?value="@action_type"?/>

????????<dbType?value="Int16"?/>

????????<layout?type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">

??????????<conversionPattern?value="%property{ActionType}"?/>

????????</layout>

??????</parameter>

?

??????<!—記錄日志的位置-->

??????<parameter>

????????<parameterName?value="@location"?/>

????????<dbType?value="String"?/>

????????<size?value="2000"?/>

????????<layout?type="log4net.Layout.PatternLayout">

??????????<conversionPattern?value="%location"?/>

????????</layout>

??????</parameter>

?????

??????<!—異常信息。ExceptionLayout?為異常輸出的默認格式-->

??????<parameter>

????????<parameterName?value="@exception"?/>

????????<dbType?value="String"?/>

????????<size?value="4000"?/>

????????<layout?type="log4net.Layout.ExceptionLayout"?/>

??????</parameter>

</appender>

注意:

向表中輸出的字段不能多于數據表本身字段,而反之則可以,但這些多余字段一定使其可以為空,否則便寫不到數據庫;

輸出字段的類型一定是對應數據表字段數據類型可以隱式轉換的,而且長度也不能超過,否則也不能寫入;

數據表字段設置盡量可以為空,這樣可以避免一條日志記錄存在空數據導致后面的日志都記錄不了。

4.3<logger>的配置

在配置文件<appender>中的配置好了輸出的介質,格式,過濾方式,還要定義日志對象<logger>。

在框架的體系里,所有的日志對象都是根日志(root logger)的后代。?因此如果一個日志對象沒有在配置文件里顯式定義,則框架使用根日志中定義的屬性。在<root>標簽里,可以定義level級別值和Appender的列表。如果沒有定義LEVEL的值,則缺省為DEBUG。可以通過<appender-ref>標簽定義日志對象使用的Appender對象。<appender-ref>聲明了在其他地方定義的Appender對象的一個引用。在一個logger對象中的設置會覆蓋根日志的設置。而對Appender屬性來說,子日志對象則會繼承父日志對象的Appender列表。這種缺省的行為方式也可以通過顯式地設定<logger>標簽的additivity屬性為false而改變。

<root>不顯式申明時使用默認的配置。我覺得在使用時不定義<root>,自定義多個<logger>,在程序中記錄日志時直接使用<logger>的name來查找相應的<logger>,這樣更靈活一些。例如:

<!--同時寫兩個文件和數據庫-->

<logger?name="ReflectionLayout">

??????<level?value="DEBUG"/>

??????<appender-ref?ref="HashtableLayout"/>

??????<appender-ref?ref="ReflectionLayout"/>

??????<appender-ref?ref="ADONetAppender"/>

</logger>

4.4關聯配置文件

log4net默認關聯的是應用程序的配置文件App.config(BS程序是Web.config),可以使用程序集自定義屬性來進行設置。下面來介紹一下這個自定義屬性:

log4net.Config.XmlConifguratorAttribute。

?

XmlConfiguratorAttribute有3個屬性:

ConfigFile:?配置文件的名字,文件路徑相對于應用程序目錄

(AppDomain.CurrentDomain.BaseDirectory)。ConfigFile屬性不能和ConfigFileExtension屬性一起使用。

ConfigFileExtension:?配置文件的擴展名,文件路徑相對于應用程序的目錄。ConfigFileExtension屬性不能和ConfigFile屬性一起使用。

Watch:?如果將Watch屬性設置為true,就會監視配置文件。當配置文件發生變化的時候,就會重新加載。

如果ConfigFile和ConfigFileExtension都沒有設置,則使用應用程序的配置文件App.config(Web.config)。

?

可以在項目的AssemblyInfo.cs文件里添加以下的語句:

?//監視默認的配置文件,App.exe.config???

[assembly: log4net.Config.XmlConfigurator(Watch =?true)]

?

//監視配置文件,App.exe.log4net。

[assembly: log4net. Config.XmlConfigurator(ConfigFileExtension =?"log4net", Watch =?true)]

?

//使用配置文件log4net.config,不監視改變。注意log4net.config文件的目錄,BS程序在站點目錄//下,CS則在應用程序啟動目錄下,如調試時在/bin/Debug下,一般將文件屬性的文件輸出目錄調為//始終復制即可

[assembly: log4net. Config.XmlConfigurator(ConfigFile =?"log4net.config")]

?

//使用配置文件log4net.config,不監視改變

[assembly: log4net. Config.XmlConfigurator()]

?

也可以在Global.asax的Application_Start里或者是Program.cs中的Main方法中添加,注意這里一定是絕對路徑,如下所示:

//這是在BS程序下,使用自定義的配置文件log4net.xml,使用Server.MapPath("~") + //@"/log4net.xml”來取得路徑。/log4net.xml為相對于站點的路徑

// ConfigureAndWatch()相當于Configure(Watch = true)

log4net.Config.XmlConfigurator.ConfigureAndWatch(

new?System.IO.FileInfo(Server.MapPath("~") +?@"/log4net.xml"));

//這是在CS程序下,可以用以下方法獲得:

string?assemblyFilePath =?Assembly.GetExecutingAssembly().Location;

string?assemblyDirPath =?Path.GetDirectoryName(assemblyFilePath);

string?configFilePath = assemblyDirPath +?"?//log4net.xml";

log4net.Config.XmlConfigurator.ConfigureAndWatch(

new?FileInfo(configFilePath));

?

或直接使用絕對路徑:

//使用自定義的配置文件,直接絕對路徑為:c:/log4net.config

log4net.Config.XmlConfigurator.Configure(new?System.IO.FileInfo(@"c:/log4net.config"));

?

5、如何記錄日志

Log4net使用很方便,先申明一個封裝類ILog?的對象,如下:

log4net.ILog?log = log4net.LogManager.GetLogger("ReflectionLayout");

其中"ReflectionLayout"便是我們自定義的日志對象<logger>的name的值。

對應5個日志輸出級別,log有5?個方法,每個方法都有兩個重載,使用如下:

try

????????????{

????????????????log.Debug("這是一個測試!");

????????????}

????????????catch(Exception?ec)

????????????{

????????????????log.Error("出現錯誤!", ec);

?????????}

如果我們需要輸出的消息是要區別開來,不按一個字符串全部輸出,就需要進行一些擴展了。

6、Log4net的簡單擴展

6.1通過重寫布局Layout輸出傳入的?message對象的屬性

6.1.1重寫Layout類

通過繼承log4net.Layout.PatternLayout類,使用log4net.Core.LoggingEvent類的方法得到了要輸出的message類的名稱,然后通過反射得到各個屬性的值,使用PatternLayout類AddConverter方法傳入得到的值。這里注意要引用用到的類的命名空間。

代碼見附注8.2。

?

6.1.2配置相應的配置文件

配置文件其他地方不用改動,只是需要改動<appender>中的<layout>。例如:

<layout?type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">

????????<param?name="ConversionPattern"

?value="記錄時間:%date????操作者ID:%property{Operator}?????????????

操作類型:%property{Action}%n??消息描述:%property{Message}%n????????????????????異常:%exception%n?"?/>

??????</layout>

其中<layout>的type由原來的log4net.Layout.PatternLayout換為自定義的TGLog.ExpandLayout2.ReflectionLayout(TGLog.ExpandLayout2為命名空間)。%property{Operator}輸出的即為message類對象的屬性Operator的值。數據庫配置同樣,相應的字段如果是自定義的,則輸出選用自定義的<layout>。例:

<!--動作類型-->

??<parameter>

??????<parameterName?value="@action_type"?/>

??????<dbType?value="Int16"?/>

??????<layout?type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">

?????????<conversionPattern?value="%property{ActionType}"?/>

??????</layout>

??</parameter>

6.1.3程序中如何使用

和一般使用方法基本相同,只是傳入的參數是一個自定義的類,類的屬性和配置文件中<layout>所有的%property{屬性}是一致的,即%property{屬性}在輸出的時候就查找傳入message類中有無對應的屬性,如果有就輸出值,沒有則輸出null。例:

log4net.ILog?log = log4net.LogManager.GetLogger("ReflectionLayout");

try

????????????{

????????????????log.Debug(new?LogMessage(

1,

"操作對象:0",

?(int)TGLog.ActionType.Other,

?"這是四個參數測試")

);

????????????}

????????????catch(Exception?ec)

????????????{

????????????????log.Error(new?LogMessage(

????????????????????????????????????1,

????????????????????????????????????"操作對象:0",

????????????????????????????????????(int)TGLog.ActionType.Other,

????????????????????????????????????"這是全部參數測試",

????????????????????????????????????"192.168.1.1",

????????????????????????????????????"MyComputer",

????????????????????????????????????"Maxthon(MyIE2)Fans"),

?????????????????????????ec

);

??????}

LogMessage的全部屬性的構造方法如下:

public?LogMessage(

????????????int?operatorID,

????????????string?operand,

????????????int?ActionType,

????????????string?message,

????????????string?ip,

????????????string?machineName,

????????????string?browser

????????????)

?????{

????????????this.ActionType = ActionType;

????????????this.Operator = operatorID;

????????????this.Message = message;

????????????this.Operand = operand;

????????????this.IP = ip;

????????????this.Browser = browser;

????????????this.MachineName = machineName;

}

6.2通過重新實現ILog接口來增加輸入的參數

6.2.1重寫LogImpl,LogManager類及實現ILog接口

這種方式是通過構造一個名為IMyLog接口,是繼承Ilog接口而來,然后分別在MyLogImpl,MyLogManager重新實現IMyLog接口,增加了每種方法的參數。MyLogImpl,MyLogManager分別繼承LogImpl,LogManager而來。

代碼分別見8.3、8.4、8.5:

6.2.2配置相應的配置文件

配置文件其他地方不用改動,只是需要改動<appender>中的<layout>元素name為ConversionPattern的value中輸出格式。例如:

<layout?type="?log4net.Layout.PatternLayout?">

????????<param?name="ConversionPattern"

?value="記錄時間:%date????操作者ID:%property{Operator}?????????????

操作類型:%property{Action}%n??消息描述:%property{Message}%n????????????????????異常:%exception%n?"?/>

??????</layout>

%property{參數}中的參數在MyLogImpl類中定義,如語句:

loggingEvent.Properties["Operator"] = operatorID;

就定義了Operator輸出參數,即%property{Operator}輸出的即為IMyLog中的參數operatorID的值。

數據庫配置同樣。例:

<!--動作類型-->

??<parameter>

??????<parameterName?value="@action_type"?/>

??????<dbType?value="Int16"?/>

??????<layout?type="?log4net.Layout.PatternLayout?">

?????????<conversionPattern?value="%property{ActionType}"?/>

??????</layout>

??</parameter>

6.2.3程序中如何使用

先引用IMyLog?,MyLogManager所在的命名空間,創建一個IMyLog對象,myLog的5?個方法,每個方法都有四個重載,增加了多參數的重載。例:

IMyLog?myLog =?MyLogManager.GetLogger("ExpandILog");

try

????????????{

myLog.Debug("這是一個參數重載測試!");??????????

}

????????????catch(Exception?ec)

????????????{

????????????????log.Error(

??????????????????????????1,

??????????????????????????"操作對象:0",

??????????????????????????(int)TGLog.ActionType.Other,

??????????????????????????"這是全部參數測試",

??????????????????????????"192.168.1.1",

??????????????????????????"MyComputer",

??????????????????????????"Maxthon(MyIE2)Fans",

??????????????????????????ec

);

??????}

7、總結

Log4net?功能很多,這里只是對已經嘗試用過的功能總結一下,普通寫日志已經足夠。需要注意的是:

1.????????????Log4net本身也有一些缺陷,比如一個記錄引起了log4net本身的異常,就會使后面的日志無法記錄下來,尤其是在寫入數據庫時。例如使用6.1擴展后,int型的屬性在<appender?>的元素<bufferSize>設置不為1時,<dbType?value="Int32"?/>時,就不能輸出到數據庫,而<dbType?value="Int16"?/>則沒任何問題。

2.????????????Log4net本身出現了異常,比如配置文件出現錯誤,有些日志輸出方式會記錄下這些異常,例如應用程序控制臺;有些則不會輸出這些錯誤,如數據庫與文件。

3.????????????擴展時也會留下一些問題。例如在使用6.1擴展輸出字段時就會出現,在log.debug(object message)中,如果message是一個自定義的類,屬性與配置文件中輸出設置也一致,構造函數時也只構造一個參數的實例,寫文件與寫數據庫都成功,而將message按沒有擴展的方式直接傳入一個字符串,即log.debug(“信息內容”)使用則只能寫入文件,而數據庫則沒寫入。自定義的Layout?就是繼承默認的PatternLayout,本來不應該出錯,但出現了問題。原因分析是自定義的message類有類型為int的屬性,作為一個對象傳入時在默認值0,而直接使用字符串則int型的字段得不到默認值,引發異常。所以建議在有擴展存在時,最好多設幾個<logger>,區分清楚,按照統一的形式記錄日志,不要混合使用。

4.????????????配置文件的設置一定要準確,在一點不正確就會導致日志不能正常輸出,所以在配置時先從最簡單的開始,同時輸出方式選擇一種能輸出log4net本身異常的方式,成功后一點一點加在新配置,這樣出錯了也容易找到那個地方配置有問題。

5.????????????log4net擴展性很強,幾乎所有的組件都可以重寫,在配置文件中配置好就可以使用。

8、附注:

8.1PatterLayout格式化字符表

轉換字符

效果

a

等價于appdomain

appdomain

引發日志事件的應用程序域的友好名稱。(使用中一般是可執行文件的名字。)

c

等價于?logger

C

等價于?type

class

等價于?type

d

等價于?date

date

發生日志事件的本地時間。?使用?DE>%utcdate?輸出UTC時間。date后面還可以跟一個日期格式,用大括號括起來。DE>例如:%date{HH:mm:ss,fff}或者%date{dd MMM yyyy HH:mm:ss,fff}。如果date后面什么也不跟,將使用ISO8601?格式?。

日期格式和.Net中DateTime類的ToString方法中使用的格式是一樣。

另外log4net還有3個自己的格式Formatter。?它們是?"ABSOLUTE", "DATE"和"ISO8601"分別代表?AbsoluteTimeDateFormatter, DateTimeDateFormatter和Iso8601DateFormatter。例如:%date{ISO8601}或%date{ABSOLUTE}。

它們的性能要好于ToString。

exception

異常信息

日志事件中必須存了一個異常對象,如果日志事件不包含沒有異常對象,將什么也不輸出。異常輸出完畢后會跟一個換行。一般會在輸出異常前加一個換行,并將異常放在最后。

F

等價于?file

file

發生日志請求的源代碼文件的名字。

警告:只在調試的時候有效。調用本地信息會影響性能。

identity

當前活動用戶的名字(Principal.Identity.Name).

警告:會影響性能。(我測試的時候%identity返回都是空的。)

l

等價于?location

L

等價于?line

location

引發日志事件的方法(包括命名空間和類名),以及所在的源文件和行號。

警告:會影響性能。沒有pdb文件的話,只有方法名,沒有源文件名和行號。

level

日志事件等級

line

引發日志事件的行號

警告:會影響性能。

logger

記錄日志事件的Logger對象的名字。

可以使用精度說明符控制Logger的名字的輸出層級,默認輸出全名。

注意,精度符的控制是從右開始的。例如:logger?名為?"a.b.c",?輸出模型為%logger{2}?,將輸出"b.c"。

m

等價于?message

M

等價于?method

message

由應用程序提供給日志事件的消息。

mdc

MDC (舊為:ThreadContext.Properties)?現在是事件屬性的一部分。?保留它是為了兼容性,它等價于?property。

method

發生日志請求的方法名(只有方法名而已)。

警告:會影響性能。

n

等價于?newline

newline

換行符

ndc

NDC (nested diagnostic context)

p

等價于?level

P

等價于?property

properties

等價于?property

property

輸出事件的特殊屬性。例如:?%property{user}?輸出user屬性。屬性是由loggers或appenders添加到時間中的。?有一個默認的屬性"DE>log4net:HostName"總是會有。DE>

%property將輸出所有的屬性?。

(擴展后可以使用)

?

r

等價于?timestamp

t

等價于?thread

timestamp

從程序啟動到事件發生所經過的毫秒數。

thread

引發日志事件的線程,如果沒有線程名就使用線程號。

type

引發日志請求的類的全名。.

可以使用精度控制符。例如:?類名是?"log4net.Layout.PatternLayout",?格式模型是%type{1}?將輸出"PatternLayout"。(也是從右開始的。)

警告:會影響性能。

u

等價于?identity

username

當前用戶的WindowsIdentity。(類似:HostName/Username)

警告:會影響性能。

utcdate

發生日志事件的UTC時間。DE>后面還可以跟一個日期格式,用大括號括起來。DE>例如:%utcdate{HH:mm:ss,fff}或者%utcdate{dd MMM yyyy HH:mm:ss,fff}。如果utcdate后面什么也不跟,將使用ISO8601?格式?。

日期格式和.Net中DateTime類的ToString方法中使用的格式是一樣。

另外log4net還有3個自己的格式Formatter。?它們是?"ABSOLUTE", "DATE"和"ISO8601"分別代表?AbsoluteTimeDateFormatter, DateTimeDateFormatter和Iso8601DateFormatter。例如:%date{ISO8601}或%date{ABSOLUTE}。

它們的性能要好于ToString。

w

等價于?username

x

等價于?ndc

X

等價于?mdc

%

%%輸出一個百分號

關于調用本地信息(caller location information)的說明:

%type %file %line %method %location %class %C %F %L %l %M?都會調用本地信息。這樣做會影響性能。本地信息使用System.Diagnostics.StackTrace得到。.Net 1.0?不支持System.Diagnostics.StackTrace?類。

本地信息在調試模式下可以正常獲取,在非調試模式下可能獲取不到,或只能獲取一部分。(根據我的測試,其實是需要有一個程序數據庫(.pdb)文件。)

%property屬性要用代碼來設置才能使用(也就是擴展一下),

默認屬性log4net:HostName不用設置。

轉義字符的修飾符:

Format modifier

left justify

minimum width

maximum width

comment

%20logger

false

20

none

如果logger名不足20個字符,就在左邊補空格。

%-20logger

true

20

none

如果logger名不足20個字符,就在右邊補空格。

%.30logger

NA

none

30

超過30個字符將截斷。

%20.30logger

false

20

30

logger名要在20到30之間,少了在左邊補空格,多了截斷。

%-20.30logger

true

20

30

logger名要在20到30之間,少了在右邊補空格,多了截斷。

8.2Layout類代碼

using?System;

using?System.Collections.Generic;

using?System.Linq;

using?System.Text;

using?log4net.Layout;

using?log4net.Layout.Pattern;

using?System.Reflection;

using?System.Collections;

using?FastReflectionLib;

?

namespace?TGLog.ExpandLayout2

{

????public?class?ReflectionLayout?:?PatternLayout

????{

????????public?ReflectionLayout()

????????{

????????????this.AddConverter("property",?typeof(ReflectionPatternConverter));

????????}

????}

?

????public?class?ReflectionPatternConverter?:?PatternLayoutConverter

????{

????????protected?override?void?Convert(

System.IO.TextWriter?writer,

?log4net.Core.LoggingEvent?loggingEvent

)

????????{

????????????if?(Option !=?null)

????????????{

????????????????//?寫入指定鍵的值

????????????????WriteObject(

writer,

?loggingEvent.Repository,

?LookupProperty(Option,

?loggingEvent)

);

????????????}

????????????else

????????????{

????????????????//?寫入所有關鍵值對

????????????????WriteDictionary(

writer,

loggingEvent.Repository,

?loggingEvent.GetProperties()

);

????????????}

????????}

?

????????///?<summary>

????????///?通過反射獲取傳入的日志對象的某個屬性的值

????????///?</summary>

????????///?<param name="property"></param>

????????///?<returns></returns>

????????private?object?LookupProperty(

string?property,

?log4net.Core.LoggingEvent?loggingEvent)

????????{

????????????object?propertyValue =?string.Empty;

?

????????????PropertyInfo?propertyInfo =

loggingEvent.MessageObject.GetType().GetProperty(property);

????????????if?(propertyInfo !=?null)

????????????{

????????????????propertyValue =

propertyInfo.GetValue(loggingEvent.MessageObject,?null);

????????????}

????????????return?propertyValue;

????????}

????}

}

8.3?MyLogImpl類代碼

using?System;

using?System.Collections.Generic;

using?System.Linq;

using?System.Text;

using?log4net.Core;

?

namespace?TGLog.ExpandILog

{

????public?class?MyLogImpl?:?LogImpl,?IMyLog

????{

????????///?<summary>

????????///?The fully qualified name of this declaring type not the type of any subclass.

????????///?</summary>

????????private?readonly?static?Type?ThisDeclaringType =?typeof(MyLogImpl);

?

????????public?MyLogImpl(ILogger?logger)

????????????:?base(logger)

????????{???????

????????}

?

????????#region?Implementation of IMyLog

?

????????public?void?Debug(int?operatorID,?string?operand,?int?actionType,object?message,

?string?ip,?string?browser,?string?machineName)

????????{

????????????Debug(operatorID,??operand,??actionType, message,

??ip,??browser, machineName,?null);

????????}

?

????????public?void?Debug(int?operatorID,?string?operand,?int?actionType,object?message,

string?ip,?string?browser,?string?machineName, System.Exception?t)

????????{

????????????if?(this.IsDebugEnabled)

????????????{

????????????????LoggingEvent?loggingEvent =

new?LoggingEvent(ThisDeclaringType, Logger.Repository,

???????????????????????????????????????Logger.Name,?Level.Info, message, t);

????????????????loggingEvent.Properties["Operator"] = operatorID;

????????????????loggingEvent.Properties["Operand"] = operand;

????????????????loggingEvent.Properties["ActionType"] = actionType;

????????????????loggingEvent.Properties["IP"] = ip;

????????????????loggingEvent.Properties["Browser"] = browser;

????????????????loggingEvent.Properties["MachineName"] = machineName;

????????????????Logger.Log(loggingEvent);

????????????}

????????}

?

????????public?void?Info(int?operatorID,?string?operand,?int?actionType,?object?message,

string?ip,?string?browser,?string?machineName)

????????{

????????????Info(operatorID, operand, actionType, message, ip, browser, machineName,?null);

????????}

?

????????public?void?Info(int?operatorID,?string?operand,?int?actionType,?object?message,

?string?ip,?string?browser,?string?machineName, System.Exception?t)

????????{

????????????if?(this.IsInfoEnabled)

????????????{

????????????????LoggingEvent?loggingEvent =

?new?LoggingEvent(ThisDeclaringType, Logger.Repository,

?Logger.Name,?Level.Info, message, t);

????????????????loggingEvent.Properties["Operator"] = operatorID;

????????????????loggingEvent.Properties["Operand"] = operand;

????????????????loggingEvent.Properties["ActionType"] = actionType;

????????????????loggingEvent.Properties["IP"] = ip;

????????????????loggingEvent.Properties["Browser"] = browser;

????????????????loggingEvent.Properties["MachineName"] = machineName;

????????????????Logger.Log(loggingEvent);

????????????}

????????}

?

????????public?void?Warn(int?operatorID,?string?operand,?int?actionType,?object?message,

string?ip,?string?browser,?string?machineName)

????????{

????????????Warn(operatorID, operand, actionType, message, ip, browser, machineName,?null);

????????}

?

????????public?void?Warn(int?operatorID,?string?operand,?int?actionType,?object?message,

?string?ip,?string?browser,?string?machineName, System.Exception?t)

????????{

????????????if?(this.IsWarnEnabled)

????????????{

????????????????LoggingEvent?loggingEvent =

?new?LoggingEvent(ThisDeclaringType, Logger.Repository,

Logger.Name,?Level.Info, message, t);

????????????????loggingEvent.Properties["Operator"] = operatorID;

????????????????loggingEvent.Properties["Operand"] = operand;

????????????????loggingEvent.Properties["ActionType"] = actionType;

????????????????loggingEvent.Properties["IP"] = ip;

????????????????loggingEvent.Properties["Browser"] = browser;

????????????????loggingEvent.Properties["MachineName"] = machineName;

????????????????Logger.Log(loggingEvent);

????????????}

????????}

?

????????public?void?Error(int?operatorID,?string?operand,?int?actionType,?object?message,

string?ip,?string?browser,?string?machineName)

????????{

????????????Error(operatorID, operand, actionType, message, ip, browser, machineName,?null);

????????}

?

????????public?void?Error(int?operatorID,?string?operand,?int?actionType,?object?message,

?string?ip,?string?browser,?string?machineName, System.Exception?t)

????????{

????????????if?(this.IsErrorEnabled)

????????????{

????????????????LoggingEvent?loggingEvent =

?new?LoggingEvent(ThisDeclaringType, Logger.Repository,

?Logger.Name,?Level.Info, message, t);

????????????????loggingEvent.Properties["Operator"] = operatorID;

????????????????loggingEvent.Properties["Operand"] = operand;

????????????????loggingEvent.Properties["ActionType"] = actionType;

????????????????loggingEvent.Properties["IP"] = ip;

????????????????loggingEvent.Properties["Browser"] = browser;

????????????????loggingEvent.Properties["MachineName"] = machineName;

????????????????Logger.Log(loggingEvent);

????????????}

????????}

?

????????public?void?Fatal(int?operatorID,?string?operand,?int?actionType,?object?message,

?string?ip,?string?browser,?string?machineName)

????????{

????????????Fatal(operatorID, operand, actionType, message, ip, browser, machineName,?null);

????????}

?

????????public?void?Fatal(int?operatorID,?string?operand,?int?actionType,?object?message,

?string?ip,?string?browser,?string?machineName, System.Exception?t)

????????{

????????????if?(this.IsFatalEnabled)

????????????{

????????????????LoggingEvent?loggingEvent =

?new?LoggingEvent(ThisDeclaringType, Logger.Repository,

???????????????????????????????????????Logger.Name,?Level.Info, message, t);

????????????????loggingEvent.Properties["Operator"] = operatorID;

????????????????loggingEvent.Properties["Operand"] = operand;

????????????????loggingEvent.Properties["ActionType"] = actionType;

????????????????loggingEvent.Properties["IP"] = ip;

????????????????loggingEvent.Properties["Browser"] = browser;

????????????????loggingEvent.Properties["MachineName"] = machineName;

????????????????Logger.Log(loggingEvent);

????????????}

????????}

????????#endregion?Implementation of IMyLog

????}

}

?

8.4?MyLogManager類代碼

#region?Copyright & License

//

// Copyright 2001-2005 The Apache Software Foundation

//

// Licensed under the Apache License, Version 2.0 (the "License");

// you may not use this file except in compliance with the License.

// You may obtain a copy of the License at

//

// http://www.apache.org/licenses/LICENSE-2.0

//

// Unless required by applicable law or agreed to in writing, software

// distributed under the License is distributed on an "AS IS" BASIS,

// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

// See the License for the specific language governing permissions and

// limitations under the License.

//

#endregion

?

using?System;

using?System.Reflection;

using?System.Collections;

using?log4net;

using?log4net.Core;

using?log4net.Repository;

using?log4net.Repository.Hierarchy;

?

namespace?TGLog.ExpandILog

{

????public?class?MyLogManager

????{

????????#region?Static Member Variables

?

????????///?<summary>

????????///?The wrapper map to use to hold the?<see cref="EventIDLogImpl"/>?objects

????????///?</summary>

????????private?static?readonly?WrapperMap?s_wrapperMap =?new?WrapperMap(newWrapperCreationHandler(WrapperCreationHandler));

?

????????#endregion

?

????????#region?Constructor

?

????????///?<summary>

????????///?Private constructor to prevent object creation

????????///?</summary>

????????private?MyLogManager() { }

?

????????#endregion

?

????????#region?Type Specific Manager Methods

?

????????///?<summary>

????????///?Returns the named logger if it exists

????????///?</summary>

????????///?<remarks>

????????///?<para>If the named logger exists (in the default hierarchy) then it

????????///?returns a reference to the logger, otherwise it returns

????????///?<c>null</c>.</para>

????????///?</remarks>

????????///?<param name="name">The fully qualified logger name to look for</param>

????????///?<returns>The logger found, or null</returns>

????????public?static?IMyLog?Exists(string?name)

????????{

????????????return?Exists(Assembly.GetCallingAssembly(), name);

????????}

?

????????///?<summary>

????????///?Returns the named logger if it exists

????????///?</summary>

????????///?<remarks>

????????///?<para>If the named logger exists (in the specified domain) then it

????????///?returns a reference to the logger, otherwise it returns

????????///?<c>null</c>.</para>

????????///?</remarks>

????????///?<param name="domain">the domain to lookup in</param>

????????///?<param name="name">The fully qualified logger name to look for</param>

????????///?<returns>The logger found, or null</returns>

????????public?static?IMyLog?Exists(string?domain,?string?name)

????????{

????????????return?WrapLogger(LoggerManager.Exists(domain, name));

????????}

?

????????///?<summary>

????????///?Returns the named logger if it exists

????????///?</summary>

????????///?<remarks>

????????///?<para>If the named logger exists (in the specified assembly's domain) then it

????????///?returns a reference to the logger, otherwise it returns

????????///?<c>null</c>.</para>

????????///?</remarks>

????????///?<param name="assembly">the assembly to use to lookup the domain</param>

????????///?<param name="name">The fully qualified logger name to look for</param>

????????///?<returns>The logger found, or null</returns>

????????public?static?IMyLog?Exists(Assembly?assembly,?string?name)

????????{

????????????return?WrapLogger(LoggerManager.Exists(assembly, name));

????????}

?

????????///?<summary>

????????///?Returns all the currently defined loggers in the default domain.

????????///?</summary>

????????///?<remarks>

????????///?<para>The root logger is?<b>not</b>?included in the returned array.</para>

????????///?</remarks>

????????///?<returns>All the defined loggers</returns>

????????public?static?IMyLog[] GetCurrentLoggers()

????????{

????????????return?GetCurrentLoggers(Assembly.GetCallingAssembly());

????????}

?

????????///?<summary>

????????///?Returns all the currently defined loggers in the specified domain.

????????///?</summary>

????????///?<param name="domain">the domain to lookup in</param>

????????///?<remarks>

????????///?The root logger is?<b>not</b>?included in the returned array.

????????///?</remarks>

????????///?<returns>All the defined loggers</returns>

????????public?static?IMyLog[] GetCurrentLoggers(string?domain)

????????{

????????????return?WrapLoggers(LoggerManager.GetCurrentLoggers(domain));

????????}

?

????????///?<summary>

????????///?Returns all the currently defined loggers in the specified assembly's domain.

????????///?</summary>

????????///?<param name="assembly">the assembly to use to lookup the domain</param>

????????///?<remarks>

????????///?The root logger is?<b>not</b>?included in the returned array.

????????///?</remarks>

????????///?<returns>All the defined loggers</returns>

????????public?static?IMyLog[] GetCurrentLoggers(Assembly?assembly)

????????{

????????????return?WrapLoggers(LoggerManager.GetCurrentLoggers(assembly));

????????}

?

????????///?<summary>

????????///?Retrieve or create a named logger.

????????///?</summary>

????????///?<remarks>

????????///?<para>Retrieve a logger named as the?<paramref name="name"/>

????????///?parameter. If the named logger already exists, then the

????????///?existing instance will be returned. Otherwise, a new instance is

????????///?created.</para>

????????///

????????///?<para>By default, loggers do not have a set level but inherit

????????///?it from the hierarchy. This is one of the central features of

????????///?log4net.</para>

????????///?</remarks>

????????///?<param name="name">The name of the logger to retrieve.</param>

????????///?<returns>the logger with the name specified</returns>

????????public?static?IMyLog?GetLogger(string?name)

????????{

????????????return?GetLogger(Assembly.GetCallingAssembly(), name);

????????}

?

????????///?<summary>

????????///?Retrieve or create a named logger.

????????///?</summary>

????????///?<remarks>

????????///?<para>Retrieve a logger named as the?<paramref name="name"/>

????????///?parameter. If the named logger already exists, then the

????????///?existing instance will be returned. Otherwise, a new instance is

????????///?created.</para>

????????///

????????///?<para>By default, loggers do not have a set level but inherit

????????///?it from the hierarchy. This is one of the central features of

????????///?log4net.</para>

????????///?</remarks>

????????///?<param name="domain">the domain to lookup in</param>

????????///?<param name="name">The name of the logger to retrieve.</param>

????????///?<returns>the logger with the name specified</returns>

????????public?static?IMyLog?GetLogger(string?domain,?string?name)

????????{

????????????return?WrapLogger(LoggerManager.GetLogger(domain, name));

????????}

?

????????///?<summary>

????????///?Retrieve or create a named logger.

????????///?</summary>

????????///?<remarks>

????????///?<para>Retrieve a logger named as the?<paramref name="name"/>

????????///?parameter. If the named logger already exists, then the

????????///?existing instance will be returned. Otherwise, a new instance is

????????///?created.</para>

????????///

????????///?<para>By default, loggers do not have a set level but inherit

????????///?it from the hierarchy. This is one of the central features of

????????///?log4net.</para>

????????///?</remarks>

????????///?<param name="assembly">the assembly to use to lookup the domain</param>

????????///?<param name="name">The name of the logger to retrieve.</param>

????????///?<returns>the logger with the name specified</returns>

????????public?static?IMyLog?GetLogger(Assembly?assembly,?string?name)

????????{

????????????return?WrapLogger(LoggerManager.GetLogger(assembly, name));

????????}

?

????????///?<summary>

????????///?Shorthand for?<see cref="LogManager.GetLogger(string)"/>.

????????///?</summary>

????????///?<remarks>

????????///?Get the logger for the fully qualified name of the type specified.

????????///?</remarks>

????????///?<param name="type">The full name of?<paramref name="type"/>?will

????????///?be used as the name of the logger to retrieve.</param>

????????///?<returns>the logger with the name specified</returns>

????????public?static?IMyLog?GetLogger(Type?type)

????????{

????????????return?GetLogger(Assembly.GetCallingAssembly(), type.FullName);

????????}

?

????????///?<summary>

????????///?Shorthand for?<see cref="LogManager.GetLogger(string)"/>.

????????///?</summary>

????????///?<remarks>

????????///?Get the logger for the fully qualified name of the type specified.

????????///?</remarks>

????????///?<param name="domain">the domain to lookup in</param>

????????///?<param name="type">The full name of?<paramref name="type"/>?will

????????///?be used as the name of the logger to retrieve.</param>

????????///?<returns>the logger with the name specified</returns>

????????public?static?IMyLog?GetLogger(string?domain,?Type?type)

????????{

????????????return?WrapLogger(LoggerManager.GetLogger(domain, type));

????????}

?

????????///?<summary>

????????///?Shorthand for?<see cref="LogManager.GetLogger(string)"/>.

????????///?</summary>

????????///?<remarks>

????????///?Get the logger for the fully qualified name of the type specified.

????????///?</remarks>

????????///?<param name="assembly">the assembly to use to lookup the domain</param>

????????///?<param name="type">The full name of?<paramref name="type"/>?will

????????///?be used as the name of the logger to retrieve.</param>

????????///?<returns>the logger with the name specified</returns>

????????public?static?IMyLog?GetLogger(Assembly?assembly,?Type?type)

????????{

????????????return?WrapLogger(LoggerManager.GetLogger(assembly, type));

????????}

?

????????#endregion

?

????????#region?Extension Handlers

?

????????///?<summary>

????????///?Lookup the wrapper object for the logger specified

????????///?</summary>

????????///?<param name="logger">the logger to get the wrapper for</param>

????????///?<returns>the wrapper for the logger specified</returns>

????????private?static?IMyLog?WrapLogger(ILogger?logger)

????????{

????????????return?(IMyLog)s_wrapperMap.GetWrapper(logger);

????????}

?

????????///?<summary>

????????///?Lookup the wrapper objects for the loggers specified

????????///?</summary>

????????///?<param name="loggers">the loggers to get the wrappers for</param>

????????///?<returns>Lookup the wrapper objects for the loggers specified</returns>

????????private?static?IMyLog[] WrapLoggers(ILogger[] loggers)

????????{

????????????IMyLog[] results =?new?IMyLog[loggers.Length];

????????????for?(int?i = 0; i < loggers.Length; i++)

????????????{

????????????????results[i] = WrapLogger(loggers[i]);

????????????}

????????????return?results;

????????}

?

????????///?<summary>

????????///?Method to create the?<see cref="ILoggerWrapper"/>?objects used by

????????///?this manager.

????????///?</summary>

????????///?<param name="logger">The logger to wrap</param>

????????///?<returns>The wrapper for the logger specified</returns>

????????private?static?ILoggerWrapper?WrapperCreationHandler(ILogger?logger)

????????{

????????????return?new?MyLogImpl(logger);

????????}

????????#endregion

????}

}

8.5?IMyLog類代碼

using?System;

using?System.Collections.Generic;

using?System.Linq;

using?System.Text;

using?log4net;

?

namespace?TGLog.ExpandILog

{

????public?interface?IMyLog?:?ILog

????{

????????void?Debug(int?operatorID,?string?operand,?int?actionType,?object?message,

string?ip,?string?browser,?string?machineName);

????????void?Debug(int?operatorID,?string?operand,?int?actionType,object?message,

string?ip,?string?browser,?string?machineName,?Exception?t);

?

????????void?Info(int?operatorID,?string?operand,?int?actionType,?object?message,

string?ip,?string?browser,?string?machineName);

????????void?Info(int?operatorID,?string?operand,?int?actionType,?object?message,

string?ip,?string?browser,?string?machineName,?Exception?t);

?

????????void?Warn(int?operatorID,?string?operand,?int?actionType,?object?message,

string?ip,?string?browser,?string?machineName);

????????void?Warn(int?operatorID,?string?operand,?int?actionType,?object?message,

?string?ip,?string?browser,?string?machineName,?Exception?t);

?

????????void?Error(int?operatorID,?string?operand,?int?actionType,?object?message,

string?ip,?string?browser,?string?machineName);

????????void?Error(int?operatorID,?string?operand,?int?actionType,?object?message,

string?ip,?string?browser,?string?machineName,?Exception?t);

?

????????void?Fatal(int?operatorID,?string?operand,?int?actionType,?object?message,

string?ip,?string?browser,?string?machineName);

????????void?Fatal(int?operatorID,?string?operand,?int?actionType,?object?message,

string?ip,?string?browser,?string?machineName,?Exception?t);

????}

}

8.6附件

使用log4net記錄日志

8.7參考

1、http://peibing211.blog.163.com/blog/static/37116360200992811595469/

2、http://www.cnblogs.com/qiangzi/archive/2009/09/10/1541023.html

3、http://blog.chinaunix.net/u/23701/showart_1414206.html

4、http://itrust.cnblogs.com/archive/2005/01/25/97225.html

5、http://www.cnitblog.com/seeyeah/archive/2009/09/20/61491.aspx

6、http://www.cnblogs.com/zhmore/archive/2009/03/19/1416707.html

7、http://blog.shinylife.net/blog/article.asp?id=948

8、http://www.cnblogs.com/manhoo/archive/2009/06/25/1511066.html

?

轉載于:https://www.cnblogs.com/hao-1234-1234/p/9065332.html

總結

以上是生活随笔為你收集整理的非常完善的Log4net详细说明(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

无套内谢老熟女 | 亚洲va欧美va天堂v国产综合 | 日韩少妇内射免费播放 | 学生妹亚洲一区二区 | 日本一区二区三区免费高清 | 日韩亚洲欧美中文高清在线 | 少妇高潮喷潮久久久影院 | 亚洲综合伊人久久大杳蕉 | 国产三级精品三级男人的天堂 | 丰满护士巨好爽好大乳 | 少妇被粗大的猛进出69影院 | 成人动漫在线观看 | 55夜色66夜色国产精品视频 | 国产成人综合美国十次 | 六月丁香婷婷色狠狠久久 | 夜精品a片一区二区三区无码白浆 | 水蜜桃av无码 | 亚洲熟妇自偷自拍另类 | 狠狠色噜噜狠狠狠狠7777米奇 | 妺妺窝人体色www婷婷 | 伊人久久婷婷五月综合97色 | 色综合天天综合狠狠爱 | 中文字幕亚洲情99在线 | 美女张开腿让人桶 | 国产电影无码午夜在线播放 | 亚洲男人av天堂午夜在 | 99麻豆久久久国产精品免费 | 无码一区二区三区在线 | 中文字幕无码视频专区 | 亚洲狠狠婷婷综合久久 | 亚洲乱码国产乱码精品精 | 日本在线高清不卡免费播放 | 亚洲精品综合五月久久小说 | 国产精品第一国产精品 | 熟妇人妻无码xxx视频 | 亚洲中文字幕va福利 | 99久久婷婷国产综合精品青草免费 | 老熟女乱子伦 | 免费观看的无遮挡av | 国产精品久免费的黄网站 | 国精产品一品二品国精品69xx | 日日麻批免费40分钟无码 | 亚洲欧美精品aaaaaa片 | 妺妺窝人体色www在线小说 | 久久久久久久久蜜桃 | 色婷婷综合激情综在线播放 | 亚洲国产高清在线观看视频 | 激情亚洲一区国产精品 | 亚洲精品成人av在线 | 亚洲高清偷拍一区二区三区 | 欧美人与禽猛交狂配 | 好屌草这里只有精品 | 精品国产一区av天美传媒 | 一本一道久久综合久久 | 暴力强奷在线播放无码 | 秋霞成人午夜鲁丝一区二区三区 | 中文字幕无码日韩欧毛 | 国产成人无码av片在线观看不卡 | 精品无人区无码乱码毛片国产 | 俺去俺来也www色官网 | 亚洲国产精品无码一区二区三区 | 久久精品中文闷骚内射 | 日本免费一区二区三区最新 | 国产精品va在线播放 | 中文字幕+乱码+中文字幕一区 | 无遮挡国产高潮视频免费观看 | 粗大的内捧猛烈进出视频 | 九九热爱视频精品 | 性欧美大战久久久久久久 | 精品久久久久久人妻无码中文字幕 | 亚洲日韩精品欧美一区二区 | 久久久国产精品无码免费专区 | 蜜桃无码一区二区三区 | 人妻无码αv中文字幕久久琪琪布 | 亚洲精品一区三区三区在线观看 | 国产精品久久久久无码av色戒 | 国内精品人妻无码久久久影院蜜桃 | 日韩精品成人一区二区三区 | 亚拍精品一区二区三区探花 | 大地资源网第二页免费观看 | 久久午夜无码鲁丝片秋霞 | a国产一区二区免费入口 | 亚洲成av人在线观看网址 | 日本xxxx色视频在线观看免费 | 国产精品无码mv在线观看 | 国产激情一区二区三区 | 精品人妻人人做人人爽夜夜爽 | 日韩精品一区二区av在线 | 99re在线播放 | 国产内射爽爽大片视频社区在线 | 精品国产av色一区二区深夜久久 | 国产性生交xxxxx无码 | 亚洲中文字幕成人无码 | 国产精品多人p群无码 | 在线看片无码永久免费视频 | 亚洲一区二区三区播放 | 国精品人妻无码一区二区三区蜜柚 | 国产精品无码永久免费888 | 4hu四虎永久在线观看 | 欧美日韩视频无码一区二区三 | 中文字幕日韩精品一区二区三区 | 动漫av一区二区在线观看 | 国产美女极度色诱视频www | 搡女人真爽免费视频大全 | 人妻少妇被猛烈进入中文字幕 | 性欧美熟妇videofreesex | 精品无人区无码乱码毛片国产 | 全黄性性激高免费视频 | 一本久道久久综合狠狠爱 | 日产精品高潮呻吟av久久 | 香蕉久久久久久av成人 | 六十路熟妇乱子伦 | 久久伊人色av天堂九九小黄鸭 | 精品无人区无码乱码毛片国产 | 色窝窝无码一区二区三区色欲 | 久久久久久av无码免费看大片 | 丰满诱人的人妻3 | 日韩精品成人一区二区三区 | 丁香啪啪综合成人亚洲 | 激情人妻另类人妻伦 | 免费观看又污又黄的网站 | 日韩av无码一区二区三区不卡 | 一本久道高清无码视频 | 丁香花在线影院观看在线播放 | 国产精品视频免费播放 | 国语精品一区二区三区 | 青青青爽视频在线观看 | 一本大道伊人av久久综合 | 成人无码视频在线观看网站 | 精品国产福利一区二区 | 久久国内精品自在自线 | 亚洲高清偷拍一区二区三区 | 狠狠色噜噜狠狠狠7777奇米 | 精品无码国产自产拍在线观看蜜 | 成人av无码一区二区三区 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 丁香啪啪综合成人亚洲 | a片在线免费观看 | 蜜臀av在线播放 久久综合激激的五月天 | 欧美丰满少妇xxxx性 | 又大又硬又爽免费视频 | 中文字幕无码日韩专区 | 国产亚洲精品久久久久久大师 | 欧美阿v高清资源不卡在线播放 | 乱人伦人妻中文字幕无码 | 亚洲日韩av一区二区三区中文 | 亚洲一区二区三区在线观看网站 | 成人免费视频视频在线观看 免费 | 国产人妻大战黑人第1集 | 国精品人妻无码一区二区三区蜜柚 | 国产真实夫妇视频 | 国产香蕉尹人视频在线 | 精品乱码久久久久久久 | 精品国产一区二区三区四区 | 亚洲色欲久久久综合网东京热 | 国产精品久久久久9999小说 | 国产成人一区二区三区在线观看 | 成 人 网 站国产免费观看 | 国产香蕉97碰碰久久人人 | 无码福利日韩神码福利片 | 成在人线av无码免观看麻豆 | 国产九九九九九九九a片 | 2019午夜福利不卡片在线 | 一本大道伊人av久久综合 | 亚洲综合精品香蕉久久网 | 日本大乳高潮视频在线观看 | 天天躁夜夜躁狠狠是什么心态 | 日韩精品一区二区av在线 | 最近中文2019字幕第二页 | 国产成人无码区免费内射一片色欲 | 男女性色大片免费网站 | 色综合久久久久综合一本到桃花网 | 亚洲成av人综合在线观看 | 麻豆人妻少妇精品无码专区 | 无人区乱码一区二区三区 | 日日橹狠狠爱欧美视频 | 熟女少妇人妻中文字幕 | 日韩人妻无码一区二区三区久久99 | 思思久久99热只有频精品66 | 久久国产自偷自偷免费一区调 | 免费人成网站视频在线观看 | 波多野结衣一区二区三区av免费 | 男女下面进入的视频免费午夜 | 精品久久久中文字幕人妻 | 成人性做爰aaa片免费看不忠 | 麻豆av传媒蜜桃天美传媒 | 麻豆精品国产精华精华液好用吗 | 中文字幕av无码一区二区三区电影 | 午夜精品一区二区三区的区别 | 久久久无码中文字幕久... | 日韩少妇内射免费播放 | 最新国产乱人伦偷精品免费网站 | 中文字幕人妻丝袜二区 | 日本xxxx色视频在线观看免费 | 伦伦影院午夜理论片 | 亚洲国产精品久久人人爱 | 成人无码精品一区二区三区 | 欧美日韩在线亚洲综合国产人 | 国产成人精品优优av | 久久久精品欧美一区二区免费 | 免费观看又污又黄的网站 | 国产美女精品一区二区三区 | 十八禁视频网站在线观看 | 中文字幕乱码亚洲无线三区 | 天堂а√在线地址中文在线 | 欧美人与物videos另类 | 国产成人无码a区在线观看视频app | 99久久久无码国产aaa精品 | 亚洲熟悉妇女xxx妇女av | 成人无码精品一区二区三区 | 久久久久av无码免费网 | 强奷人妻日本中文字幕 | 欧美人与物videos另类 | 午夜福利试看120秒体验区 | 欧美xxxxx精品 | 亚洲精品国偷拍自产在线观看蜜桃 | 精品欧洲av无码一区二区三区 | 国内少妇偷人精品视频 | 乱中年女人伦av三区 | 美女黄网站人色视频免费国产 | 免费网站看v片在线18禁无码 | 国产精品.xx视频.xxtv | 成人一区二区免费视频 | 国产亚洲精品久久久久久久久动漫 | 真人与拘做受免费视频 | 国产一区二区三区日韩精品 | 亚洲va中文字幕无码久久不卡 | 特大黑人娇小亚洲女 | 丰满岳乱妇在线观看中字无码 | 中文字幕人妻无码一区二区三区 | 欧美兽交xxxx×视频 | 亚洲熟妇色xxxxx亚洲 | 色狠狠av一区二区三区 | 久久综合九色综合97网 | 日韩成人一区二区三区在线观看 | 亚洲小说春色综合另类 | 亚洲人成人无码网www国产 | 日产国产精品亚洲系列 | 美女极度色诱视频国产 | 老子影院午夜精品无码 | 欧美精品一区二区精品久久 | 国产综合在线观看 | 国产av一区二区三区最新精品 | 熟女体下毛毛黑森林 | 国产av久久久久精东av | 欧美 日韩 亚洲 在线 | 国产精品鲁鲁鲁 | 色一情一乱一伦 | 亚洲天堂2017无码 | 无码精品人妻一区二区三区av | 色五月丁香五月综合五月 | 国产精品对白交换视频 | 欧美怡红院免费全部视频 | 在教室伦流澡到高潮hnp视频 | 中文字幕日产无线码一区 | 男女爱爱好爽视频免费看 | 精品久久8x国产免费观看 | 久久综合给久久狠狠97色 | 国内精品久久久久久中文字幕 | 久久伊人色av天堂九九小黄鸭 | 精品无码一区二区三区的天堂 | 国产在线无码精品电影网 | 无码毛片视频一区二区本码 | 99久久精品日本一区二区免费 | 中文字幕无码免费久久9一区9 | 免费国产成人高清在线观看网站 | 亚洲小说春色综合另类 | 亚洲自偷精品视频自拍 | 国产成人综合美国十次 | 欧美35页视频在线观看 | 99精品国产综合久久久久五月天 | 免费网站看v片在线18禁无码 | 国产精品99爱免费视频 | 色五月丁香五月综合五月 | 日日摸夜夜摸狠狠摸婷婷 | 真人与拘做受免费视频 | 日韩精品无码免费一区二区三区 | 国产成人综合在线女婷五月99播放 | 装睡被陌生人摸出水好爽 | 夫妻免费无码v看片 | 桃花色综合影院 | 亚洲欧美精品aaaaaa片 | 亚洲成a人片在线观看无码 | 强奷人妻日本中文字幕 | 特级做a爰片毛片免费69 | 久久综合给合久久狠狠狠97色 | 国产真实夫妇视频 | 免费人成在线视频无码 | 超碰97人人射妻 | 国产精品美女久久久网av | 亚洲熟妇自偷自拍另类 | 女人被爽到呻吟gif动态图视看 | 国产成人一区二区三区别 | 国内精品人妻无码久久久影院蜜桃 | 亚洲午夜久久久影院 | 中文字幕人妻无码一夲道 | 东京无码熟妇人妻av在线网址 | 岛国片人妻三上悠亚 | 超碰97人人做人人爱少妇 | 日韩精品无码免费一区二区三区 | 国产乱人伦偷精品视频 | 久久99精品久久久久久 | 在线а√天堂中文官网 | 精品国产青草久久久久福利 | 日韩欧美中文字幕公布 | 精品国产福利一区二区 | 一本久道高清无码视频 | 4hu四虎永久在线观看 | 激情亚洲一区国产精品 | 午夜精品一区二区三区在线观看 | 日本精品人妻无码免费大全 | 国产成人精品无码播放 | 我要看www免费看插插视频 | 成人无码视频免费播放 | 亚洲精品国产第一综合99久久 | 无码国内精品人妻少妇 | 我要看www免费看插插视频 | 久久久久成人精品免费播放动漫 | 国产电影无码午夜在线播放 | 一本大道久久东京热无码av | 美女毛片一区二区三区四区 | 久久熟妇人妻午夜寂寞影院 | 亚洲日本va中文字幕 | 日韩少妇内射免费播放 | 波多野结衣aⅴ在线 | 性生交片免费无码看人 | 亚洲人成网站色7799 | 亚洲国产精品久久人人爱 | 天天爽夜夜爽夜夜爽 | 波多野结衣高清一区二区三区 | 国产一区二区三区精品视频 | 国产亚洲精品久久久久久大师 | 国内少妇偷人精品视频免费 | 久久久久久久人妻无码中文字幕爆 | 九一九色国产 | 久久精品国产大片免费观看 | 国产舌乚八伦偷品w中 | 亚洲自偷自拍另类第1页 | 天堂无码人妻精品一区二区三区 | 国产成人精品视频ⅴa片软件竹菊 | 亚洲乱码中文字幕在线 | 国产亚洲精品精品国产亚洲综合 | 久久精品女人的天堂av | 老司机亚洲精品影院 | 亚洲精品一区二区三区大桥未久 | 成人无码影片精品久久久 | 蜜臀av无码人妻精品 | 日本护士xxxxhd少妇 | 国产艳妇av在线观看果冻传媒 | 国产办公室秘书无码精品99 | 成人无码视频免费播放 | 无码午夜成人1000部免费视频 | 乌克兰少妇性做爰 | 玩弄少妇高潮ⅹxxxyw | 日本高清一区免费中文视频 | 精品一二三区久久aaa片 | 欧美变态另类xxxx | 亚洲欧美日韩国产精品一区二区 | 日本精品久久久久中文字幕 | 国产精品久免费的黄网站 | 亚洲色大成网站www | 欧美变态另类xxxx | 三上悠亚人妻中文字幕在线 | 正在播放东北夫妻内射 | 国产午夜福利100集发布 | 成在人线av无码免观看麻豆 | 免费无码av一区二区 | 亚洲精品久久久久avwww潮水 | 国产精品内射视频免费 | 高潮毛片无遮挡高清免费 | 日本一区二区更新不卡 | 一本精品99久久精品77 | 日本在线高清不卡免费播放 | 国产精品久久久av久久久 | 久久精品人人做人人综合 | 精品无人国产偷自产在线 | 性欧美疯狂xxxxbbbb | 亚洲娇小与黑人巨大交 | 成熟妇人a片免费看网站 | 亚洲欧美精品aaaaaa片 | 国产无av码在线观看 | 娇妻被黑人粗大高潮白浆 | 女人被男人爽到呻吟的视频 | 中文字幕乱码亚洲无线三区 | 大肉大捧一进一出视频出来呀 | 牲交欧美兽交欧美 | 亚洲成av人片在线观看无码不卡 | 国产精品久免费的黄网站 | 亚洲爆乳大丰满无码专区 | 内射老妇bbwx0c0ck | 人妻少妇精品视频专区 | 国产人妻精品午夜福利免费 | 久久99精品久久久久婷婷 | 四虎国产精品一区二区 | 四虎国产精品免费久久 | 国产一区二区三区影院 | 国产免费久久精品国产传媒 | 蜜桃无码一区二区三区 | 国产一区二区三区四区五区加勒比 | 两性色午夜免费视频 | 丰满人妻被黑人猛烈进入 | 久青草影院在线观看国产 | 国产精品毛多多水多 | 人妻少妇被猛烈进入中文字幕 | 久久99国产综合精品 | 正在播放东北夫妻内射 | 无遮挡国产高潮视频免费观看 | 久久精品国产大片免费观看 | 久久婷婷五月综合色国产香蕉 | 国产真人无遮挡作爱免费视频 | 亚洲欧美国产精品专区久久 | 亚洲中文无码av永久不收费 | 国产亚洲tv在线观看 | 欧美精品国产综合久久 | 无码纯肉视频在线观看 | 丰满人妻精品国产99aⅴ | 亚洲日韩一区二区 | 丝袜 中出 制服 人妻 美腿 | 99久久久无码国产aaa精品 | 亚洲色偷偷偷综合网 | 国产人妻人伦精品 | 麻花豆传媒剧国产免费mv在线 | 久久精品视频在线看15 | 亚洲成av人综合在线观看 | 欧美阿v高清资源不卡在线播放 | 精品熟女少妇av免费观看 | 亚洲无人区午夜福利码高清完整版 | 无码福利日韩神码福利片 | 国产精品久久久久7777 | 亚洲综合无码久久精品综合 | 国产亚洲欧美日韩亚洲中文色 | 亚洲精品中文字幕乱码 | 中文字幕无码日韩欧毛 | 2020久久香蕉国产线看观看 | 88国产精品欧美一区二区三区 | 狠狠色丁香久久婷婷综合五月 | 少妇高潮一区二区三区99 | 天堂亚洲免费视频 | 亚洲中文字幕无码中字 | 久久精品视频在线看15 | 国产精品igao视频网 | 性欧美牲交xxxxx视频 | 国产成人综合在线女婷五月99播放 | 中文字幕无线码免费人妻 | 女人被男人爽到呻吟的视频 | 午夜精品久久久内射近拍高清 | 国内少妇偷人精品视频 | 波多野结衣av在线观看 | 中文字幕av伊人av无码av | 色婷婷香蕉在线一区二区 | 玩弄人妻少妇500系列视频 | 又紧又大又爽精品一区二区 | 精品夜夜澡人妻无码av蜜桃 | 国产亚洲精品久久久久久大师 | 国产av无码专区亚洲a∨毛片 | 免费网站看v片在线18禁无码 | 国产精品人妻一区二区三区四 | 18无码粉嫩小泬无套在线观看 | 色欲av亚洲一区无码少妇 | 玩弄中年熟妇正在播放 | 色老头在线一区二区三区 | 精品夜夜澡人妻无码av蜜桃 | 天天摸天天碰天天添 | 久久99久久99精品中文字幕 | 永久免费精品精品永久-夜色 | 天天综合网天天综合色 | 无码午夜成人1000部免费视频 | 亚欧洲精品在线视频免费观看 | 欧美成人高清在线播放 | 兔费看少妇性l交大片免费 | 国产成人精品久久亚洲高清不卡 | 国产激情精品一区二区三区 | 日韩精品一区二区av在线 | 免费观看黄网站 | 久久久久免费看成人影片 | 成在人线av无码免观看麻豆 | 综合激情五月综合激情五月激情1 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产做国产爱免费视频 | 免费视频欧美无人区码 | 日本一区二区三区免费播放 | 综合网日日天干夜夜久久 | 嫩b人妻精品一区二区三区 | 国产亚洲人成a在线v网站 | 国产午夜精品一区二区三区嫩草 | 色综合久久久无码网中文 | 中文字幕乱码亚洲无线三区 | 最新国产麻豆aⅴ精品无码 | 人妻尝试又大又粗久久 | 国产超碰人人爽人人做人人添 | 天天躁日日躁狠狠躁免费麻豆 | 男人和女人高潮免费网站 | 欧美激情综合亚洲一二区 | 国产精品亚洲а∨无码播放麻豆 | 人人爽人人澡人人高潮 | 亚洲国精产品一二二线 | 国产两女互慰高潮视频在线观看 | 欧洲vodafone精品性 | 日韩精品无码一本二本三本色 | 日欧一片内射va在线影院 | 女高中生第一次破苞av | 无人区乱码一区二区三区 | 少妇久久久久久人妻无码 | 领导边摸边吃奶边做爽在线观看 | 日本一本二本三区免费 | 亚洲综合精品香蕉久久网 | 成人综合网亚洲伊人 | 日韩无码专区 | 红桃av一区二区三区在线无码av | 六月丁香婷婷色狠狠久久 | 人妻少妇精品无码专区动漫 | 国产特级毛片aaaaaaa高清 | 国产麻豆精品精东影业av网站 | 免费无码的av片在线观看 | 乱码午夜-极国产极内射 | 99久久婷婷国产综合精品青草免费 | 日韩精品无码免费一区二区三区 | 麻豆av传媒蜜桃天美传媒 | 亚洲国产高清在线观看视频 | 成人综合网亚洲伊人 | 亚洲色在线无码国产精品不卡 | 亚洲天堂2017无码中文 | 宝宝好涨水快流出来免费视频 | 正在播放老肥熟妇露脸 | 免费人成网站视频在线观看 | 人妻少妇精品无码专区动漫 | 老司机亚洲精品影院无码 | 精品 日韩 国产 欧美 视频 | 国产乱人偷精品人妻a片 | 蜜桃av抽搐高潮一区二区 | 国产黄在线观看免费观看不卡 | 亚洲va中文字幕无码久久不卡 | 美女张开腿让人桶 | 欧美老人巨大xxxx做受 | 亚洲乱码日产精品bd | 午夜无码人妻av大片色欲 | 色综合久久久无码中文字幕 | 久久久久免费精品国产 | 久久久亚洲欧洲日产国码αv | 日韩精品无码一本二本三本色 | 久久人人97超碰a片精品 | 国产成人无码午夜视频在线观看 | 欧美老妇与禽交 | 色老头在线一区二区三区 | 内射白嫩少妇超碰 | 鲁鲁鲁爽爽爽在线视频观看 | 日韩亚洲欧美精品综合 | 2019午夜福利不卡片在线 | 亚洲 a v无 码免 费 成 人 a v | 无码人妻丰满熟妇区毛片18 | 日本大香伊一区二区三区 | 国产99久久精品一区二区 | 玩弄中年熟妇正在播放 | 全黄性性激高免费视频 | 天堂亚洲免费视频 | 性欧美熟妇videofreesex | 亚洲欧美中文字幕5发布 | 色婷婷av一区二区三区之红樱桃 | 高潮毛片无遮挡高清免费视频 | 午夜福利一区二区三区在线观看 | 一本久道久久综合狠狠爱 | 欧美日本日韩 | 久久久婷婷五月亚洲97号色 | 乱人伦中文视频在线观看 | 亚洲欧美精品aaaaaa片 | 成人无码影片精品久久久 | 国产一区二区三区精品视频 | 内射巨臀欧美在线视频 | 丰满少妇高潮惨叫视频 | 国产亚洲人成a在线v网站 | 水蜜桃色314在线观看 | 久久国产自偷自偷免费一区调 | 欧美zoozzooz性欧美 | 国产深夜福利视频在线 | 久久久中文久久久无码 | 欧美日韩综合一区二区三区 | 荡女精品导航 | 无遮无挡爽爽免费视频 | 国产三级久久久精品麻豆三级 | 国产性生交xxxxx无码 | 激情爆乳一区二区三区 | 一本无码人妻在中文字幕免费 | 人妻少妇精品视频专区 | 人人妻人人澡人人爽人人精品浪潮 | 久久精品人妻少妇一区二区三区 | 国产黑色丝袜在线播放 | 丰满少妇熟乱xxxxx视频 | 欧美丰满熟妇xxxx性ppx人交 | 久久精品国产大片免费观看 | 少妇激情av一区二区 | 久久99精品国产.久久久久 | 婷婷六月久久综合丁香 | 国产乱人偷精品人妻a片 | 亚洲精品一区二区三区大桥未久 | 成人性做爰aaa片免费看不忠 | 强辱丰满人妻hd中文字幕 | 亚洲成熟女人毛毛耸耸多 | 久久无码专区国产精品s | 亚洲乱亚洲乱妇50p | 乱码av麻豆丝袜熟女系列 | 亚洲午夜无码久久 | 精品久久8x国产免费观看 | 亚洲 日韩 欧美 成人 在线观看 | 久久久久久久久888 | 97无码免费人妻超级碰碰夜夜 | 亚洲精品一区二区三区婷婷月 | 初尝人妻少妇中文字幕 | 免费乱码人妻系列无码专区 | 亚洲精品无码人妻无码 | 妺妺窝人体色www婷婷 | 亚洲中文无码av永久不收费 | 久久综合给合久久狠狠狠97色 | 男女猛烈xx00免费视频试看 | 亚洲日韩一区二区三区 | 一本色道婷婷久久欧美 | 无码播放一区二区三区 | 黑人粗大猛烈进出高潮视频 | 亚洲成av人综合在线观看 | 国产超碰人人爽人人做人人添 | 亚洲综合色区中文字幕 | 青青草原综合久久大伊人精品 | 国产女主播喷水视频在线观看 | 蜜桃臀无码内射一区二区三区 | 日韩人妻少妇一区二区三区 | 帮老师解开蕾丝奶罩吸乳网站 | 99视频精品全部免费免费观看 | 丰满肥臀大屁股熟妇激情视频 | 日韩亚洲欧美精品综合 | 成年女人永久免费看片 | 精品一区二区不卡无码av | 两性色午夜视频免费播放 | 蜜臀av无码人妻精品 | 中文毛片无遮挡高清免费 | 欧美人与善在线com | 国产三级精品三级男人的天堂 | 国产综合在线观看 | 图片小说视频一区二区 | 国产精品.xx视频.xxtv | 欧美zoozzooz性欧美 | 亚洲中文字幕无码一久久区 | 成人一在线视频日韩国产 | 人妻夜夜爽天天爽三区 | 久久99精品久久久久婷婷 | 免费中文字幕日韩欧美 | 国产成人无码av片在线观看不卡 | 无码国内精品人妻少妇 | 黄网在线观看免费网站 | 天堂а√在线中文在线 | 久久久久免费精品国产 | 三级4级全黄60分钟 | 国产亚洲精品久久久久久 | 国产人妖乱国产精品人妖 | 丰满少妇女裸体bbw | 老头边吃奶边弄进去呻吟 | 中文精品久久久久人妻不卡 | 国产亚洲精品久久久ai换 | 久久99精品久久久久婷婷 | 日日天干夜夜狠狠爱 | 亚洲精品一区三区三区在线观看 | 成人试看120秒体验区 | 日韩精品无码一区二区中文字幕 | 偷窥日本少妇撒尿chinese | 国产香蕉97碰碰久久人人 | 又色又爽又黄的美女裸体网站 | 蜜桃视频韩日免费播放 | 一本大道伊人av久久综合 | 日本一区二区三区免费播放 | 成人精品一区二区三区中文字幕 | 亚洲另类伦春色综合小说 | 成人动漫在线观看 | 俄罗斯老熟妇色xxxx | 牲欲强的熟妇农村老妇女 | 中国大陆精品视频xxxx | 日本乱偷人妻中文字幕 | 狠狠色色综合网站 | 两性色午夜视频免费播放 | 精品人妻中文字幕有码在线 | 色欲av亚洲一区无码少妇 | 亚洲国产成人a精品不卡在线 | 欧美老妇交乱视频在线观看 | av无码不卡在线观看免费 | 黑人玩弄人妻中文在线 | 日本成熟视频免费视频 | 精品国产一区二区三区四区 | 131美女爱做视频 | 中文字幕乱码人妻二区三区 | 一区二区三区高清视频一 | 少妇高潮喷潮久久久影院 | 日本一区二区更新不卡 | 亚洲精品一区二区三区大桥未久 | 久久zyz资源站无码中文动漫 | 欧美刺激性大交 | 性色欲网站人妻丰满中文久久不卡 | 免费无码一区二区三区蜜桃大 | 在线播放无码字幕亚洲 | v一区无码内射国产 | 国产激情无码一区二区app | 亚洲熟妇色xxxxx欧美老妇 | 精品国偷自产在线视频 | 免费播放一区二区三区 | 日本成熟视频免费视频 | 黑人巨大精品欧美黑寡妇 | 亚洲精品中文字幕乱码 | 好爽又高潮了毛片免费下载 | 日日麻批免费40分钟无码 | 亚洲国产精品久久久天堂 | 成在人线av无码免费 | 久久久久久久人妻无码中文字幕爆 | 精品日本一区二区三区在线观看 | 亚洲娇小与黑人巨大交 | 女人和拘做爰正片视频 | 欧美日韩一区二区综合 | 欧美黑人乱大交 | 欧美性生交活xxxxxdddd | 无码人妻av免费一区二区三区 | а√资源新版在线天堂 | 国产成人无码区免费内射一片色欲 | 国产深夜福利视频在线 | www国产亚洲精品久久网站 | 国产办公室秘书无码精品99 | 妺妺窝人体色www在线小说 | www成人国产高清内射 | 一本色道婷婷久久欧美 | 国产精品无码一区二区桃花视频 | 亚洲 日韩 欧美 成人 在线观看 | 中文字幕无码日韩欧毛 | 国产人妻精品午夜福利免费 | 欧美黑人乱大交 | 乱码av麻豆丝袜熟女系列 | 亚洲国产欧美在线成人 | 国产av一区二区三区最新精品 | 国产精品99久久精品爆乳 | 精品国产一区二区三区四区 | 东北女人啪啪对白 | 九九热爱视频精品 | 荡女精品导航 | 欧美 亚洲 国产 另类 | 亚洲乱亚洲乱妇50p | 亚洲综合在线一区二区三区 | 性做久久久久久久免费看 | 亚洲欧美综合区丁香五月小说 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 国精产品一品二品国精品69xx | 粉嫩少妇内射浓精videos | 国产av人人夜夜澡人人爽麻豆 | 久久午夜无码鲁丝片秋霞 | 网友自拍区视频精品 | 99麻豆久久久国产精品免费 | 国产成人无码午夜视频在线观看 | 又紧又大又爽精品一区二区 | 国产特级毛片aaaaaa高潮流水 | 熟女俱乐部五十路六十路av | 成人亚洲精品久久久久软件 | 中文字幕 亚洲精品 第1页 | 日韩精品a片一区二区三区妖精 | 99久久婷婷国产综合精品青草免费 | 亚洲a无码综合a国产av中文 | 丰满妇女强制高潮18xxxx | 宝宝好涨水快流出来免费视频 | 俄罗斯老熟妇色xxxx | 日产精品高潮呻吟av久久 | 人妻无码αv中文字幕久久琪琪布 | 欧美日韩一区二区免费视频 | 鲁鲁鲁爽爽爽在线视频观看 | 亚洲精品一区三区三区在线观看 | 国产色视频一区二区三区 | 国产激情精品一区二区三区 | 日韩亚洲欧美中文高清在线 | 一本大道伊人av久久综合 | 国产亚洲精品久久久闺蜜 | 国产 浪潮av性色四虎 | 少妇性l交大片欧洲热妇乱xxx | 国产成人无码av一区二区 | 日本大香伊一区二区三区 | 扒开双腿疯狂进出爽爽爽视频 | 午夜福利不卡在线视频 | 亚洲精品中文字幕乱码 | 日韩精品成人一区二区三区 | 亚洲日韩中文字幕在线播放 | 精品国产国产综合精品 | 丰满护士巨好爽好大乳 | 国产午夜无码精品免费看 | 日本大香伊一区二区三区 | 真人与拘做受免费视频一 | 美女黄网站人色视频免费国产 | 久久综合色之久久综合 | 精品国产青草久久久久福利 | 亚洲日韩av一区二区三区四区 | a片免费视频在线观看 | 中文字幕 人妻熟女 | 亚洲爆乳精品无码一区二区三区 | 伊人久久大香线蕉午夜 | 99久久人妻精品免费二区 | 亚洲中文字幕在线观看 | 久久无码中文字幕免费影院蜜桃 | 人妻与老人中文字幕 | 久久久久成人片免费观看蜜芽 | 国产精品美女久久久久av爽李琼 | www一区二区www免费 | 亚洲精品久久久久avwww潮水 | 国产免费无码一区二区视频 | 亚洲日本一区二区三区在线 | 久久久www成人免费毛片 | 国产午夜亚洲精品不卡 | 久热国产vs视频在线观看 | 丰满人妻一区二区三区免费视频 | 人人妻人人澡人人爽人人精品浪潮 | 午夜熟女插插xx免费视频 | 少妇无码av无码专区在线观看 | 日产精品99久久久久久 | 日本熟妇乱子伦xxxx | 黄网在线观看免费网站 | 中文无码伦av中文字幕 | 国产精品自产拍在线观看 | 亚洲日韩精品欧美一区二区 | 日本精品久久久久中文字幕 | 久久国产自偷自偷免费一区调 | 人人妻人人澡人人爽欧美精品 | 中文字幕无码免费久久99 | 蜜桃视频韩日免费播放 | 成 人影片 免费观看 | 欧美亚洲国产一区二区三区 | 亚洲国产精品久久久天堂 | 日日天干夜夜狠狠爱 | 国产精品久久国产精品99 | 亚洲熟悉妇女xxx妇女av | 一本大道伊人av久久综合 | 久久午夜夜伦鲁鲁片无码免费 | 男女爱爱好爽视频免费看 | 久久综合香蕉国产蜜臀av | 色综合视频一区二区三区 | 色欲综合久久中文字幕网 | 四虎国产精品一区二区 | 亚洲男人av天堂午夜在 | 欧美人与禽猛交狂配 | 国产成人精品必看 | 少妇高潮喷潮久久久影院 | 国产黄在线观看免费观看不卡 | 欧美乱妇无乱码大黄a片 | 国产精品理论片在线观看 | 亚洲人亚洲人成电影网站色 | 久久久久免费看成人影片 | 精品无码一区二区三区爱欲 | 成熟妇人a片免费看网站 | 亚洲综合无码一区二区三区 | 亚洲а∨天堂久久精品2021 | 久久伊人色av天堂九九小黄鸭 | 欧美老熟妇乱xxxxx | 黑人大群体交免费视频 | 伦伦影院午夜理论片 | 精品无码一区二区三区的天堂 | 呦交小u女精品视频 | 亚洲日韩av片在线观看 | 国产综合色产在线精品 | 大地资源网第二页免费观看 | 丰满岳乱妇在线观看中字无码 | 又粗又大又硬又长又爽 | 亚洲精品中文字幕乱码 | 中文字幕精品av一区二区五区 | 色婷婷av一区二区三区之红樱桃 | 亚洲小说春色综合另类 | 一个人看的www免费视频在线观看 | 国产肉丝袜在线观看 | 国产亚洲精品久久久久久国模美 | 国产精品第一国产精品 | 成熟妇人a片免费看网站 | 色综合久久中文娱乐网 | 日韩av激情在线观看 | 东京一本一道一二三区 | 无码人妻精品一区二区三区下载 | 亚洲综合精品香蕉久久网 | 特黄特色大片免费播放器图片 | 国产内射爽爽大片视频社区在线 | 小泽玛莉亚一区二区视频在线 | 欧美精品国产综合久久 | 黑人巨大精品欧美一区二区 | 蜜桃无码一区二区三区 | 亚洲色偷偷偷综合网 | 国产精品a成v人在线播放 | 动漫av一区二区在线观看 | 成人欧美一区二区三区 | 国产午夜无码精品免费看 | 日韩欧美中文字幕在线三区 | 国产97色在线 | 免 | 7777奇米四色成人眼影 | 97无码免费人妻超级碰碰夜夜 | av无码电影一区二区三区 | 桃花色综合影院 | 97夜夜澡人人爽人人喊中国片 | 亚洲一区二区三区四区 | 亚洲日韩一区二区 | 伊人久久大香线蕉午夜 | 水蜜桃av无码 | 在线精品国产一区二区三区 | 99麻豆久久久国产精品免费 | 波多野结衣高清一区二区三区 | 欧洲熟妇精品视频 | 少妇性荡欲午夜性开放视频剧场 | 久久久精品人妻久久影视 | 国产亚洲精品精品国产亚洲综合 | 人人妻人人藻人人爽欧美一区 | 无码乱肉视频免费大全合集 | 九九久久精品国产免费看小说 | 麻豆精品国产精华精华液好用吗 | 亚洲精品无码人妻无码 | 1000部夫妻午夜免费 | 中文字幕乱妇无码av在线 | 亚洲色偷偷男人的天堂 | 国产精品视频免费播放 | 欧美35页视频在线观看 | 亚洲精品成人福利网站 | 人妻少妇精品久久 | 一本无码人妻在中文字幕免费 | 亚洲一区二区三区在线观看网站 | 小鲜肉自慰网站xnxx | 麻豆人妻少妇精品无码专区 | 波多野42部无码喷潮在线 | 亚洲国产精品美女久久久久 | 九一九色国产 | 久久人人爽人人爽人人片av高清 | 中文毛片无遮挡高清免费 | 兔费看少妇性l交大片免费 | 久久97精品久久久久久久不卡 | 日韩亚洲欧美精品综合 | 大乳丰满人妻中文字幕日本 | 亚洲aⅴ无码成人网站国产app | 国产69精品久久久久app下载 | 亚洲区欧美区综合区自拍区 | 亚洲中文无码av永久不收费 | 人妻少妇精品无码专区动漫 | 日韩欧美中文字幕公布 | 日欧一片内射va在线影院 | 亚洲熟女一区二区三区 | 欧美自拍另类欧美综合图片区 | 国产成人无码a区在线观看视频app | 日日碰狠狠躁久久躁蜜桃 | 欧美精品无码一区二区三区 | 亚洲另类伦春色综合小说 | 亚洲日本一区二区三区在线 | 在线 国产 欧美 亚洲 天堂 | 东京无码熟妇人妻av在线网址 | 日韩亚洲欧美中文高清在线 | 狠狠综合久久久久综合网 | a国产一区二区免费入口 | 荫蒂添的好舒服视频囗交 | 一个人看的www免费视频在线观看 | 精品无码国产自产拍在线观看蜜 | 欧美一区二区三区视频在线观看 | 人妻有码中文字幕在线 | 国产亚洲精品精品国产亚洲综合 | 中文字幕av无码一区二区三区电影 | 少妇人妻偷人精品无码视频 | 国产人妖乱国产精品人妖 | 性欧美熟妇videofreesex | 妺妺窝人体色www在线小说 | 国产精品人人爽人人做我的可爱 | 人人妻人人澡人人爽精品欧美 | 国产亚洲人成a在线v网站 | aⅴ在线视频男人的天堂 | 无码人妻丰满熟妇区毛片18 | 久久久精品人妻久久影视 | 捆绑白丝粉色jk震动捧喷白浆 | 宝宝好涨水快流出来免费视频 | 亚洲午夜无码久久 | 无码吃奶揉捏奶头高潮视频 | 日日天日日夜日日摸 | 国产精品人人爽人人做我的可爱 | 熟妇人妻无码xxx视频 | 国产精品久久久久无码av色戒 | 在教室伦流澡到高潮hnp视频 | 亚洲gv猛男gv无码男同 | 亚洲精品鲁一鲁一区二区三区 | 国产国语老龄妇女a片 | 性啪啪chinese东北女人 | 一本久久a久久精品亚洲 | www国产亚洲精品久久网站 | 亚洲经典千人经典日产 | 成人无码精品一区二区三区 | 久久久中文字幕日本无吗 | 亚洲另类伦春色综合小说 | 日韩亚洲欧美精品综合 | 98国产精品综合一区二区三区 | 精品国产av色一区二区深夜久久 | 无码av最新清无码专区吞精 | 久久久精品欧美一区二区免费 | 国产在线无码精品电影网 | 亚洲人成网站在线播放942 | 综合网日日天干夜夜久久 | 亚洲国产欧美在线成人 | 亚洲日本在线电影 | 日日鲁鲁鲁夜夜爽爽狠狠 | 精品无码av一区二区三区 | 中文字幕亚洲情99在线 | 1000部啪啪未满十八勿入下载 | 男女下面进入的视频免费午夜 | 欧美熟妇另类久久久久久不卡 | 国产精品无码成人午夜电影 | 成人无码影片精品久久久 | 激情综合激情五月俺也去 | 亚洲aⅴ无码成人网站国产app | 精品国产aⅴ无码一区二区 | 国产亚洲视频中文字幕97精品 | 天海翼激烈高潮到腰振不止 | 性开放的女人aaa片 | 欧美亚洲日韩国产人成在线播放 | 色欲综合久久中文字幕网 | 日日天干夜夜狠狠爱 | 亚洲a无码综合a国产av中文 | 日韩精品无码免费一区二区三区 | 成熟人妻av无码专区 | 狠狠cao日日穞夜夜穞av | 国产精品毛片一区二区 | 真人与拘做受免费视频 | 亚洲综合久久一区二区 | 国产精品亚洲一区二区三区喷水 | 欧美高清在线精品一区 | 亚欧洲精品在线视频免费观看 | 人妻插b视频一区二区三区 | 中文字幕av伊人av无码av | 久久久久亚洲精品中文字幕 | 亚洲国产成人a精品不卡在线 | 国产亚洲tv在线观看 | 88国产精品欧美一区二区三区 | 亚洲熟妇色xxxxx欧美老妇y | 伊人色综合久久天天小片 | 麻豆国产人妻欲求不满谁演的 | 99久久99久久免费精品蜜桃 | 精品成人av一区二区三区 | 日日麻批免费40分钟无码 | 四虎国产精品免费久久 | 欧美日本免费一区二区三区 | 国产人妖乱国产精品人妖 | 久久久久亚洲精品中文字幕 | 大肉大捧一进一出视频出来呀 | 九九久久精品国产免费看小说 | 狠狠色丁香久久婷婷综合五月 | 国产精品香蕉在线观看 | 真人与拘做受免费视频 | 奇米影视888欧美在线观看 | 国内精品人妻无码久久久影院蜜桃 | 动漫av网站免费观看 | 久久综合香蕉国产蜜臀av | 午夜精品一区二区三区的区别 | 中文字幕无线码 | 亚洲第一网站男人都懂 | 亚洲日韩av一区二区三区中文 | 精品国产av色一区二区深夜久久 | 狠狠色丁香久久婷婷综合五月 | 一本色道久久综合亚洲精品不卡 | 99久久无码一区人妻 | 男女爱爱好爽视频免费看 | 久久国产精品二国产精品 | 老熟妇乱子伦牲交视频 | 乱码午夜-极国产极内射 | 午夜精品一区二区三区的区别 | 亚洲性无码av中文字幕 | 欧美日韩亚洲国产精品 | 亚洲最大成人网站 | 国产精品无码一区二区三区不卡 | 国产特级毛片aaaaaa高潮流水 | 成人欧美一区二区三区黑人免费 | 欧美国产亚洲日韩在线二区 | 国产精品久免费的黄网站 | 妺妺窝人体色www在线小说 | 久久人人爽人人爽人人片ⅴ | 亚洲欧美中文字幕5发布 | 丰满人妻翻云覆雨呻吟视频 | 欧洲vodafone精品性 | 久久精品女人的天堂av | 久久综合给合久久狠狠狠97色 | 强奷人妻日本中文字幕 | 久久人人97超碰a片精品 | 色婷婷综合激情综在线播放 | 玩弄中年熟妇正在播放 | 人妻中文无码久热丝袜 | 综合网日日天干夜夜久久 | 男女下面进入的视频免费午夜 | 欧美日韩在线亚洲综合国产人 | 国产亲子乱弄免费视频 | 一区二区三区乱码在线 | 欧洲 | 国产精品自产拍在线观看 | 久久久久久久女国产乱让韩 | 国产成人综合在线女婷五月99播放 | 亚洲成av人片在线观看无码不卡 | 18禁止看的免费污网站 | 中国女人内谢69xxxx | 无码纯肉视频在线观看 | 国产真实伦对白全集 | 久久视频在线观看精品 | av人摸人人人澡人人超碰下载 | 欧美真人作爱免费视频 | 国产特级毛片aaaaaa高潮流水 | 久久精品一区二区三区四区 | 亚洲伊人久久精品影院 | 波多野42部无码喷潮在线 | 日韩视频 中文字幕 视频一区 | 国产午夜视频在线观看 | 欧美一区二区三区 | 在线观看免费人成视频 | 九九综合va免费看 | 国产精品人人爽人人做我的可爱 | 1000部啪啪未满十八勿入下载 | 无码国模国产在线观看 | 人妻熟女一区 | 中文字幕色婷婷在线视频 | 亚洲综合久久一区二区 | 麻豆md0077饥渴少妇 | 熟女少妇在线视频播放 | 野外少妇愉情中文字幕 | 夜先锋av资源网站 | 精品国产一区二区三区av 性色 | 久久久久人妻一区精品色欧美 | 国产成人无码av片在线观看不卡 | 日韩少妇白浆无码系列 | 亚洲成a人片在线观看无码3d | 蜜臀aⅴ国产精品久久久国产老师 | 中文字幕无码热在线视频 | 亚洲精品久久久久久一区二区 | 欧美午夜特黄aaaaaa片 | 激情综合激情五月俺也去 | 国产亚洲人成a在线v网站 | 日韩亚洲欧美精品综合 | 天天做天天爱天天爽综合网 | 一区二区三区高清视频一 | 性色av无码免费一区二区三区 | 国产av人人夜夜澡人人爽麻豆 | 在线成人www免费观看视频 | 久久精品视频在线看15 | 亚洲а∨天堂久久精品2021 | 无人区乱码一区二区三区 | 日韩精品久久久肉伦网站 | 无码精品国产va在线观看dvd | 久激情内射婷内射蜜桃人妖 | 久久 国产 尿 小便 嘘嘘 | 人人妻人人藻人人爽欧美一区 | 亚洲综合无码一区二区三区 | 亚洲色欲久久久综合网东京热 | 成人性做爰aaa片免费看 | 色婷婷久久一区二区三区麻豆 | 亚洲国产精品一区二区第一页 | 精品国精品国产自在久国产87 | 久久熟妇人妻午夜寂寞影院 | 欧美丰满熟妇xxxx | 亚洲男人av天堂午夜在 | 亚洲欧美精品伊人久久 | 妺妺窝人体色www婷婷 | 奇米影视7777久久精品 | 野狼第一精品社区 | 伊人久久大香线蕉av一区二区 | 亚洲欧美中文字幕5发布 | 欧美35页视频在线观看 | 国产人妻人伦精品 | 风流少妇按摩来高潮 | 欧美人与善在线com | 国产做国产爱免费视频 | 欧美猛少妇色xxxxx | 人人妻人人澡人人爽欧美一区九九 | 性啪啪chinese东北女人 | 波多野结衣av一区二区全免费观看 | 久久久久人妻一区精品色欧美 | 东京无码熟妇人妻av在线网址 | 国产成人无码av片在线观看不卡 | 色偷偷人人澡人人爽人人模 | 天堂亚洲2017在线观看 | 精品乱码久久久久久久 | 人妻aⅴ无码一区二区三区 | 欧美国产亚洲日韩在线二区 | 久久久av男人的天堂 | 久久久中文字幕日本无吗 | 免费网站看v片在线18禁无码 | 欧美黑人性暴力猛交喷水 | 无遮无挡爽爽免费视频 | 中文字幕人成乱码熟女app | 帮老师解开蕾丝奶罩吸乳网站 | 国产成人无码午夜视频在线观看 | 色窝窝无码一区二区三区色欲 | 亚洲大尺度无码无码专区 | 精品久久久久久人妻无码中文字幕 | 国产一区二区三区四区五区加勒比 | 特黄特色大片免费播放器图片 | 久久亚洲精品中文字幕无男同 | 青青草原综合久久大伊人精品 | 西西人体www44rt大胆高清 | 国产午夜视频在线观看 | 性欧美牲交xxxxx视频 | 国产成人av免费观看 | 四虎4hu永久免费 | 欧美兽交xxxx×视频 | 日本高清一区免费中文视频 | 2020久久香蕉国产线看观看 | 在线播放无码字幕亚洲 | 亚洲中文无码av永久不收费 | 伊人色综合久久天天小片 | 成人无码视频免费播放 | 亚洲阿v天堂在线 | 性欧美熟妇videofreesex | 少妇被粗大的猛进出69影院 | 日本一本二本三区免费 | 亚洲精品国产a久久久久久 | 天海翼激烈高潮到腰振不止 | 国产va免费精品观看 | 国产成人久久精品流白浆 | 中文毛片无遮挡高清免费 | 狠狠色丁香久久婷婷综合五月 | 亚洲色无码一区二区三区 | 国产精品久久久久9999小说 | 久9re热视频这里只有精品 | 亚洲欧美日韩国产精品一区二区 | 夫妻免费无码v看片 | 丁香花在线影院观看在线播放 | 毛片内射-百度 | 沈阳熟女露脸对白视频 | 国内少妇偷人精品视频免费 | 色婷婷综合激情综在线播放 | 国产精品igao视频网 | 亚洲自偷自拍另类第1页 | 精品国产福利一区二区 | 99精品视频在线观看免费 | 免费观看黄网站 | 在线欧美精品一区二区三区 | 国产乱人伦av在线无码 | 精品人人妻人人澡人人爽人人 | 亚洲精品久久久久avwww潮水 | 国产精品久久久久无码av色戒 | 亚洲精品一区二区三区在线 | 欧美日韩一区二区三区自拍 | 亚洲 a v无 码免 费 成 人 a v | 国産精品久久久久久久 | 人人妻人人澡人人爽欧美一区九九 | 久久久久成人精品免费播放动漫 | 国内丰满熟女出轨videos | 亚洲 a v无 码免 费 成 人 a v | 欧美亚洲国产一区二区三区 | 国产精品va在线观看无码 | 蜜臀aⅴ国产精品久久久国产老师 | 色欲久久久天天天综合网精品 | 久久久无码中文字幕久... | 99久久精品无码一区二区毛片 | 蜜桃无码一区二区三区 | 波多野结衣av在线观看 | 任你躁国产自任一区二区三区 | 亚洲人成影院在线观看 | 麻豆蜜桃av蜜臀av色欲av | 中文字幕无码视频专区 | 蜜桃视频插满18在线观看 | 国产精品va在线观看无码 | 国产欧美亚洲精品a | 亚洲精品国产精品乱码不卡 | 纯爱无遮挡h肉动漫在线播放 | 十八禁真人啪啪免费网站 | 九九综合va免费看 | 水蜜桃av无码 | 国产免费观看黄av片 | 国产色视频一区二区三区 | 激情五月综合色婷婷一区二区 | 粉嫩少妇内射浓精videos | 亚洲国产精品一区二区第一页 | 色综合久久久无码中文字幕 | 丰满少妇弄高潮了www | 国产人妻大战黑人第1集 | 精品无码一区二区三区的天堂 | 亚洲欧美日韩成人高清在线一区 | 欧美野外疯狂做受xxxx高潮 | 99久久精品午夜一区二区 | 久久亚洲中文字幕无码 | 日韩欧美群交p片內射中文 | 性开放的女人aaa片 | 久久久久免费看成人影片 | 色综合视频一区二区三区 | 欧美黑人性暴力猛交喷水 | 俄罗斯老熟妇色xxxx | 欧美精品无码一区二区三区 | 在线观看欧美一区二区三区 | 国产精品怡红院永久免费 | 久久久中文字幕日本无吗 | 亚洲一区二区三区无码久久 | 欧美色就是色 | 日韩人妻系列无码专区 | 少妇人妻偷人精品无码视频 | 国产精品久久久久久亚洲影视内衣 | 理论片87福利理论电影 | 老太婆性杂交欧美肥老太 | 亚洲精品久久久久久一区二区 | 亚洲一区二区三区含羞草 | 四虎国产精品一区二区 | 蜜桃视频插满18在线观看 | 亚洲中文字幕av在天堂 | 精品无码一区二区三区的天堂 | 7777奇米四色成人眼影 | 国产成人精品优优av | 亚洲色偷偷男人的天堂 | 日韩视频 中文字幕 视频一区 | 少妇无码一区二区二三区 | 天堂а√在线地址中文在线 | 无码国模国产在线观看 | 蜜桃视频插满18在线观看 | 中文字幕无码av激情不卡 | 18无码粉嫩小泬无套在线观看 | 性欧美大战久久久久久久 | 国产亚av手机在线观看 | 亚洲爆乳精品无码一区二区三区 | 丝袜 中出 制服 人妻 美腿 | 国产高潮视频在线观看 | 玩弄中年熟妇正在播放 | 亚洲の无码国产の无码影院 | 国产内射爽爽大片视频社区在线 | 无遮挡啪啪摇乳动态图 | 大地资源网第二页免费观看 | 国产精品久久精品三级 | 亚洲熟悉妇女xxx妇女av | 高中生自慰www网站 | 麻花豆传媒剧国产免费mv在线 | 人妻aⅴ无码一区二区三区 | 欧美日韩一区二区免费视频 | 久久精品视频在线看15 | 鲁一鲁av2019在线 | 成人无码视频在线观看网站 | 97资源共享在线视频 | 国产suv精品一区二区五 | √天堂资源地址中文在线 | 性色欲网站人妻丰满中文久久不卡 | 国产精品久久久久久久9999 | 欧美日韩久久久精品a片 | 九一九色国产 | 亚洲精品国偷拍自产在线观看蜜桃 | 色老头在线一区二区三区 | 色妞www精品免费视频 | 国产一区二区三区影院 | 中国女人内谢69xxxxxa片 | 亚洲国产欧美日韩精品一区二区三区 | 丰满少妇高潮惨叫视频 | 久热国产vs视频在线观看 | 国产亚洲欧美日韩亚洲中文色 | 日本免费一区二区三区最新 | 中文字幕无码人妻少妇免费 | 日韩av无码一区二区三区 | 亚洲精品无码人妻无码 | 国产成人综合色在线观看网站 | 激情五月综合色婷婷一区二区 | 人妻互换免费中文字幕 | 无码人妻精品一区二区三区下载 | 天干天干啦夜天干天2017 | 国产人妻精品一区二区三区 | www一区二区www免费 | 国产激情艳情在线看视频 | 无遮无挡爽爽免费视频 | 在线播放亚洲第一字幕 | 亚洲 激情 小说 另类 欧美 | 西西人体www44rt大胆高清 | 中文字幕无码乱人伦 | 成人动漫在线观看 | 久久人妻内射无码一区三区 | 扒开双腿吃奶呻吟做受视频 | 荫蒂被男人添的好舒服爽免费视频 | 久久国产精品精品国产色婷婷 | 久久久成人毛片无码 | 蜜桃av抽搐高潮一区二区 | 人妻插b视频一区二区三区 | 亚洲日韩av一区二区三区中文 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产又粗又硬又大爽黄老大爷视 | 中文无码成人免费视频在线观看 | 一本久久a久久精品vr综合 | 麻豆md0077饥渴少妇 | 国产99久久精品一区二区 | 日本爽爽爽爽爽爽在线观看免 | 999久久久国产精品消防器材 | 久久99国产综合精品 | 日日摸夜夜摸狠狠摸婷婷 | 一本久久伊人热热精品中文字幕 | 日韩精品成人一区二区三区 | 撕开奶罩揉吮奶头视频 | 国产小呦泬泬99精品 | 激情内射亚州一区二区三区爱妻 | 亚洲日韩一区二区 | 中文字幕无码av激情不卡 | 亚洲性无码av中文字幕 | 性做久久久久久久免费看 | 久久亚洲中文字幕精品一区 | 澳门永久av免费网站 | а√资源新版在线天堂 | 俄罗斯老熟妇色xxxx | 人人妻人人澡人人爽人人精品浪潮 | 少妇被黑人到高潮喷出白浆 | 亚洲欧美国产精品久久 | 午夜性刺激在线视频免费 | 国产激情综合五月久久 | 国产亚洲精品久久久ai换 | 成人免费无码大片a毛片 | 午夜精品久久久内射近拍高清 | 水蜜桃色314在线观看 | 免费看男女做好爽好硬视频 | 色噜噜亚洲男人的天堂 | 女人被男人躁得好爽免费视频 | 欧美喷潮久久久xxxxx | 亚洲精品午夜无码电影网 | 亚洲乱码国产乱码精品精 | 精品国偷自产在线视频 | 成人精品视频一区二区 | 在线观看免费人成视频 | 久久久久se色偷偷亚洲精品av | 无码人中文字幕 | 色婷婷av一区二区三区之红樱桃 | 亚洲精品一区二区三区在线观看 | 国产成人久久精品流白浆 | 欧美freesex黑人又粗又大 | 精品水蜜桃久久久久久久 | 亚洲人成网站免费播放 | 亚洲一区av无码专区在线观看 | 国产av人人夜夜澡人人爽麻豆 | 国产97人人超碰caoprom | 亚洲色欲色欲天天天www | 2020最新国产自产精品 | 欧洲熟妇色 欧美 | 又大又硬又爽免费视频 | 超碰97人人做人人爱少妇 | 人妻与老人中文字幕 | 精品无人国产偷自产在线 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲国产午夜精品理论片 | 大肉大捧一进一出好爽视频 | 国产偷国产偷精品高清尤物 | 内射老妇bbwx0c0ck | 久久天天躁夜夜躁狠狠 | 爱做久久久久久 | 老熟女乱子伦 | 欧美日韩综合一区二区三区 | 久久久久av无码免费网 | 又湿又紧又大又爽a视频国产 | 在线精品国产一区二区三区 | 狠狠色噜噜狠狠狠狠7777米奇 | 无码人妻精品一区二区三区下载 | 成人一在线视频日韩国产 | 亚洲国产综合无码一区 | 2019午夜福利不卡片在线 | 久久精品国产精品国产精品污 | 久久亚洲中文字幕精品一区 | 精品人妻av区 | 国产猛烈高潮尖叫视频免费 | 久久久久成人片免费观看蜜芽 | 无码成人精品区在线观看 | 亚拍精品一区二区三区探花 | 亚洲精品一区国产 | 欧美人与善在线com | 亚洲а∨天堂久久精品2021 | 色欲综合久久中文字幕网 | 人妻aⅴ无码一区二区三区 | 亚洲gv猛男gv无码男同 | 婷婷丁香五月天综合东京热 | 精品一区二区不卡无码av | 亚洲乱码中文字幕在线 | 人人澡人人透人人爽 | 国产精品鲁鲁鲁 | 国产精品办公室沙发 | 亚洲欧美综合区丁香五月小说 | 国产乱人无码伦av在线a | 欧美野外疯狂做受xxxx高潮 | 国产成人无码午夜视频在线观看 | 美女极度色诱视频国产 | 免费观看又污又黄的网站 | 学生妹亚洲一区二区 | 欧洲精品码一区二区三区免费看 | 久久亚洲精品成人无码 | 激情人妻另类人妻伦 | 少妇人妻av毛片在线看 | 免费无码一区二区三区蜜桃大 | 高清国产亚洲精品自在久久 | 欧美精品免费观看二区 | 极品嫩模高潮叫床 | 国产无套粉嫩白浆在线 | 中文字幕人妻无码一区二区三区 | 国产精品久久久久久亚洲影视内衣 | 日本乱偷人妻中文字幕 | 国产美女极度色诱视频www | 免费国产成人高清在线观看网站 | 88国产精品欧美一区二区三区 | 亚洲精品一区二区三区四区五区 | 亚洲国产一区二区三区在线观看 | 亚洲成av人综合在线观看 | 99久久久无码国产aaa精品 | 色婷婷欧美在线播放内射 | 国产熟妇高潮叫床视频播放 | 国语精品一区二区三区 | 国产精品久久久久无码av色戒 | 欧美精品无码一区二区三区 | 国产激情无码一区二区 | 国产亚洲精品久久久久久久久动漫 | 国内精品人妻无码久久久影院蜜桃 | 成年女人永久免费看片 | 人人妻人人澡人人爽精品欧美 | 四虎4hu永久免费 | 亚洲人成网站免费播放 | 露脸叫床粗话东北少妇 | 中文字幕乱码亚洲无线三区 | 欧洲精品码一区二区三区免费看 | 伦伦影院午夜理论片 | 天天av天天av天天透 | 色婷婷香蕉在线一区二区 | 兔费看少妇性l交大片免费 | 在线а√天堂中文官网 | 强辱丰满人妻hd中文字幕 | 日产精品99久久久久久 | 亚洲经典千人经典日产 | 精品午夜福利在线观看 | 色综合久久久久综合一本到桃花网 | 午夜成人1000部免费视频 | 无码播放一区二区三区 | 在线精品亚洲一区二区 | 捆绑白丝粉色jk震动捧喷白浆 | 国内综合精品午夜久久资源 | 99久久无码一区人妻 | 免费观看黄网站 | 丁香花在线影院观看在线播放 | 国产精品久久久一区二区三区 | 强伦人妻一区二区三区视频18 | 欧美日韩一区二区综合 | 国产美女精品一区二区三区 | 东京热无码av男人的天堂 | 色一情一乱一伦一区二区三欧美 | 国产成人一区二区三区在线观看 | 无码成人精品区在线观看 | 300部国产真实乱 | 人妻互换免费中文字幕 | 在线天堂新版最新版在线8 | 国产成人精品视频ⅴa片软件竹菊 | 色欲人妻aaaaaaa无码 | 妺妺窝人体色www在线小说 | 日本精品少妇一区二区三区 | 中文字幕人妻丝袜二区 | 国产精品人妻一区二区三区四 | 东京热男人av天堂 | 又紧又大又爽精品一区二区 | 免费人成网站视频在线观看 | 国产情侣作爱视频免费观看 | 成人毛片一区二区 | 好屌草这里只有精品 | 久久综合九色综合欧美狠狠 | 国产日产欧产精品精品app | 国产精品久久福利网站 | 色综合久久久无码网中文 | 亚洲无人区一区二区三区 | 成在人线av无码免观看麻豆 | 欧美变态另类xxxx | 亚洲欧洲日本综合aⅴ在线 | 亚洲日韩av片在线观看 | 亚洲 欧美 激情 小说 另类 | 天天av天天av天天透 | 无码人妻丰满熟妇区五十路百度 | 精品国精品国产自在久国产87 | 两性色午夜免费视频 | 久久久久久久女国产乱让韩 | 日日摸夜夜摸狠狠摸婷婷 | 国产内射爽爽大片视频社区在线 | 97夜夜澡人人爽人人喊中国片 | 欧美日韩综合一区二区三区 | 国产亚洲精品久久久久久国模美 | 亚洲s色大片在线观看 | 国产无套粉嫩白浆在线 | 国内精品人妻无码久久久影院蜜桃 | 国产精品亚洲一区二区三区喷水 | 欧美 丝袜 自拍 制服 另类 | 中文字幕无码人妻少妇免费 | 日韩av无码一区二区三区不卡 | 成熟人妻av无码专区 | 99麻豆久久久国产精品免费 | 中文无码成人免费视频在线观看 | 国产成人一区二区三区别 | 丝袜美腿亚洲一区二区 | 免费观看黄网站 | 亚洲娇小与黑人巨大交 | 免费无码的av片在线观看 | 欧美黑人巨大xxxxx | 人妻无码久久精品人妻 | 18黄暴禁片在线观看 | 亚洲午夜久久久影院 | 亚洲精品久久久久中文第一幕 | 色婷婷综合激情综在线播放 | 蜜臀av无码人妻精品 | 国产精品美女久久久网av | 日韩人妻系列无码专区 | 亚洲精品一区三区三区在线观看 | 少妇被粗大的猛进出69影院 | 欧美熟妇另类久久久久久不卡 | 国产精品久久久久久亚洲影视内衣 | 久久人人爽人人人人片 | 国产精品毛多多水多 | 国产肉丝袜在线观看 | 国语自产偷拍精品视频偷 | √8天堂资源地址中文在线 | 欧美成人免费全部网站 | 久久午夜无码鲁丝片 | 亚洲国产精品一区二区第一页 | 色综合久久久无码网中文 | 免费观看激色视频网站 | 国产午夜福利亚洲第一 | 强辱丰满人妻hd中文字幕 | 久久久中文字幕日本无吗 | av在线亚洲欧洲日产一区二区 | 国产成人无码av一区二区 | 成人精品视频一区二区三区尤物 | 久久精品国产日本波多野结衣 | 日韩 欧美 动漫 国产 制服 | 亚洲自偷自拍另类第1页 | 亚洲精品无码人妻无码 | 国产色在线 | 国产 | 人人妻人人澡人人爽人人精品 | 少妇太爽了在线观看 | 久久精品女人天堂av免费观看 | 狠狠色丁香久久婷婷综合五月 | 狠狠综合久久久久综合网 | 国产成人精品久久亚洲高清不卡 | 国产午夜视频在线观看 | 色欲av亚洲一区无码少妇 | 国产熟妇另类久久久久 | 国产人妻人伦精品 | 亚洲午夜久久久影院 | 日韩精品一区二区av在线 | 亚洲一区二区三区偷拍女厕 | 最近的中文字幕在线看视频 | 精品人妻中文字幕有码在线 | 日本丰满熟妇videos | 亚洲精品国产精品乱码不卡 | 强伦人妻一区二区三区视频18 | 狠狠色噜噜狠狠狠7777奇米 | 少妇高潮一区二区三区99 | 97精品国产97久久久久久免费 | 亚洲国产日韩a在线播放 | 久久国产精品二国产精品 | 欧美阿v高清资源不卡在线播放 | 成人精品视频一区二区三区尤物 | 国产熟妇另类久久久久 | 亚洲 另类 在线 欧美 制服 | 午夜男女很黄的视频 | 国产特级毛片aaaaaaa高清 | 十八禁视频网站在线观看 | 亚洲精品久久久久久久久久久 | 亚洲国产欧美在线成人 | 国产精品对白交换视频 | 免费网站看v片在线18禁无码 | 欧美性猛交xxxx富婆 | 乱人伦人妻中文字幕无码 | 一本无码人妻在中文字幕免费 | 日本成熟视频免费视频 | 成人性做爰aaa片免费看不忠 | 亚洲国产av精品一区二区蜜芽 | 蜜桃视频韩日免费播放 | 77777熟女视频在线观看 а天堂中文在线官网 | 撕开奶罩揉吮奶头视频 | 成人av无码一区二区三区 | 中文字幕乱码人妻二区三区 | 俺去俺来也在线www色官网 | 人妻尝试又大又粗久久 | 国产无套粉嫩白浆在线 | 两性色午夜免费视频 | 领导边摸边吃奶边做爽在线观看 | 丁香花在线影院观看在线播放 | 成人片黄网站色大片免费观看 | 精品偷拍一区二区三区在线看 | 免费人成网站视频在线观看 | 色欲综合久久中文字幕网 | 精品欧洲av无码一区二区三区 | 国产真实乱对白精彩久久 | 国产午夜福利100集发布 | 午夜精品一区二区三区在线观看 | 欧美zoozzooz性欧美 | 日韩精品无码免费一区二区三区 | 人人爽人人爽人人片av亚洲 | 亚洲国产高清在线观看视频 | 成人综合网亚洲伊人 | 久久精品中文闷骚内射 | 妺妺窝人体色www在线小说 | 欧美三级a做爰在线观看 | 国产精品资源一区二区 | 少妇高潮一区二区三区99 | 97色伦图片97综合影院 | 色欲av亚洲一区无码少妇 |