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

C#中log4Net使用方法(二)

開發 后端
本文主要介紹log4net使用方法,Log4net是一個第三方開源組件,它設計的主要目的是組合,生成日志信息,同時將配置保存到各種存儲介質或者展現平臺中。希望對你有幫助,一起來看。

 

接上一篇 C#中log4net使用方法(一)

Layout

Layout 組件用于向用戶顯示最后經過格式化的輸出信息。輸出信息可以以多種格式顯示,主要依賴于我們采用的Layout組件類型。可以是線性的或一個XML文件。Layout組件和一個Appender組件一起工作。API幫助手冊中有關于不同Layout組件的列表。一個Appender對象,只能對應一個Layout對象。要實現你自己的Layout類,你需要從log4net.Layout.LayoutSkeleton類繼承,它實現了ILayout接口。

 

 

4 在程序中使用log4net

在開始對你的程序進行日志記錄前,需要先啟動log4net引擎。這意味著你需要先配置前面提到的三種組件。你可以用兩種方法來設定配置:在單獨的文件中設定配置或在代碼中定義配置。

因為下面幾種原因,推薦在一個單獨的文件中定義配置:

  • 你不需要重新編譯源代碼就能改變配置;
  • 你可以在程序正運行的時候就改變配置。

這一點在一些WEB程序和遠程過程調用的程序中有時很重要;

考慮到第一種方法的重要性,我們先看看怎樣在文件中設定配置信息。

(1)定義配置文件

配置信息可以放在如下幾種形式文件的一種中。

在程序的配置文件里,如AssemblyName.config 或web.config.

在你自己的文件里。文件名可以是任何你想要的名字,如AppName.exe.xyz等.

log4net框架會在相對于AppDomain.CurrentDomain.BaseDirectory 屬性定義的目錄路徑下查找配置文件。框架在配置文件里要查找的唯一標識是<log4net>標簽。一個完整的配置文件的例子如下:

 

 

  1. <?xml version="1.0" encoding="utf-8" ?> 
  2. <configuration> 
  3. <configSections> 
  4. <section name="log4net"   
  5. type="log4net.Config.Log4NetConfigurationSectionHandler,  
  6. log4net-net-1.0" /> 
  7. </configSections> 
  8. <log4net> 
  9. <root> 
  10. <level value="WARN" /> 
  11. <appender-ref ref="LogFileAppender" /> 
  12. <appender-ref ref="ConsoleAppender" /></root> 
  13. <logger name="testApp.Logging"> 
  14. <level value="DEBUG"/> 
  15. </logger><appender name="LogFileAppender"   
  16. type="log4net.Appender.FileAppender" > 
  17. <param name="File" value="log-file.txt" /> 
  18. <param name="AppendToFile" value="true" /> 
  19. <layout type="log4net.Layout.PatternLayout"> 
  20. <param name="Header" value="[Header]\r\n"/> 
  21. <param name="Footer" value="[Footer]\r\n"/> 
  22. <param name="ConversionPattern"   
  23. value="%d [%t] %-5p %c [%x] - %m%n" 
  24. /> 
  25. </layout> 
  26. <filter type="log4net.Filter.LevelRangeFilter"> 
  27. <param name="LevelMin" value="DEBUG" /> 
  28. <param name="LevelMax" value="WARN" /> 
  29. </filter> 
  30. </appender> 
  31. <appender name="ConsoleAppender"   
  32. type="log4net.Appender.ConsoleAppender" > 
  33. <layout type="log4net.Layout.PatternLayout"> 
  34. <param name="ConversionPattern"   
  35. value="%d [%t] %-5p %c [%x] - %m%n"   
  36. /> 
  37. </layout> 
  38. </appender> 
  39. </log4net> 
  40. </configuration> 

 

你可以直接將上面的文本拷貝到任何程序中使用,但是最好還是能夠理解配置文件是怎樣構成的。只有當你需要在應用程序配置文件中使用log4net配置時,才需要在<configSection>標簽中加入<section>配置節點入口。對于其他的單獨文件,只有<log4net>標簽內的文本才是必需的,這些標簽的順序并不是固定的。下面我們依次講解各個標簽內文本的含義:

(2)<root>

 

  1. <root> 
  2. <level value="WARN" /> 
  3. <appender-ref ref="LogFileAppender" /> 
  4. <appender-ref ref="ConsoleAppender" /> 
  5. </root> 

 

 

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

 

  1. <logger name="testApp.Logging" additivity="false">  
  2. </logger> 

 

Additivity的值缺省是true.

  1. <Logger> 
  2. <logger name="testApp.Logging"> 
  3. <level value="DEBUG"/> 
  4. </logger> 

 

 

<logger> 元素預定義了一個具體日志對象的設置。然后通過調用LogManager.GetLogger(“testAPP.Logging”)函數,你可以檢索具有該名字的日志。如果LogManager.GetLogger(…)打開的不是預定義的日志對象,則該日志對象會繼承根日志對象的屬性。知道了這一點,我們可以說,其實<logger>標簽并不是必須的。

 

 

(3) <appender>

 

 

  1. <appender name="LogFileAppender"   
  2. type="log4net.Appender.FileAppender" > 
  3. <param name="File" value="log-file.txt" /> 
  4. <param name="AppendToFile" value="true" /> 
  5. <layout type="log4net.Layout.PatternLayout"> 
  6. <param name="Header" value="[Header]\r\n" /> 
  7. <param name="Footer" value="[Footer]\r\n"/> 
  8. <param name="ConversionPattern"   
  9. value="%d [%t] %-5p %c - %m%n"   
  10. /> 
  11. </layout> 
  12. <filter type="log4net.Filter.LevelRangeFilter"> 
  13. <param name="LevelMin" value="DEBUG" /> 
  14. <param name="LevelMax" value="WARN" /> 
  15. </filter> 
  16. </appender> 

 

 

在<root>標簽或單個的<logger>標簽里的Appender對象可以用<appender>標簽定義。<appender>標簽的基本形式如上面所示。它定義了appender的名字和類型。另外比較重要的是<appender>標簽內部的其他標簽。不同的appender有不同的<param>標簽。在這里,為了使用FileAppender,你需要一個文件名作為參數。另外還需要一個在<appender>標簽內部定義一個Layout對象。Layout對象定義在它自己的<layout>標簽內。<layout>標簽的type屬性定義了Layout的類型(在本例里是PatternLayout),同時也確定了需要提供的參數值。Header和Footer標簽提供了一個日志會話(logging session)開始和結束時輸出的文字。有關每種appender的具體配置的例子,可以在log4net\doc\manual\example-config-appender.html中得到。

 

(4) log4net.Layout.PatternLayout中的轉換模式(ConversionPattern)

%m(message):輸出的日志消息,如ILog.Debug(…)輸出的一條消息

%n(new line):換行

%d(datetime):輸出當前語句運行的時刻

%r(run time):輸出程序從運行到執行到當前語句時消耗的毫秒數

%t(thread id):當前語句所在的線程ID

%p(priority): 日志的當前優先級別,即DEBUG、INFO、WARN…等

%c(class):當前日志對象的名稱,例如:

模式字符串為:%-10c -%m%n

代碼為:

ILog log=LogManager.GetLogger(“Exam.Log”);

log.Debug(“Hello”);

則輸出為下面的形式:

Exam.Log - Hello

%L:輸出語句所在的行號

%F:輸出語句所在的文件名

%-數字:表示該項的最小長度,如果不夠,則用空格填充

例如,轉換模式為%r [%t]%-5p %c - %m%n 的 PatternLayout 將生成類似于以下內容的輸出:

176 [main] INFO org.foo.Bar - Located nearest gas station.

 

(5) <filter>

最后,讓我們看看在Appender元素里的<filter>標簽。它定義了應用到Appender對象的過濾器。本例中,我們使用了LevelRangeFilter過濾器,它可以只記錄LevelMin和LevelMax參數指定的日志級別之間的日志事件。可以在一個Appender上定義多個過濾器(Filter),這些過濾器將會按照它們定義的順序對日志事件進行過濾。其他過濾器的有關信息可以在log4net的SDK文檔中找到。

 

5  使用配置文件

(1)關聯配置文件

當我們創建了上面的配置文件后,我們接下來需要把它和我們的應用聯系起來。缺省的,每個獨立的可執行程序集都會定義它自己的配置。log4net框架使用 log4net.Config.DOMConfiguratorAttribute在程序集的級別上定義配置文件。

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

 

  1. [assembly:log4net.Config.DOMConfigurator(ConfigFile="filename",   
  2. ConfigFileExtension="ext",Watch=true/false)] 

 

ConfigFile:指出了我們的配置文件的路徑及文件名,包括擴展名。

ConfigFileExtension:如果我們對被編譯程序的程序集使用了不同的文件擴展名,那么我們需要定義這個屬性,缺省的,程序集的配置文件擴展名為”config”。

Watch (Boolean屬性): log4net框架用這個屬性來確定是否需要在運行時監視文件的改變。如果這個屬性為true,那么FileSystemWatcher將會被用來監視文件的改變,重命名,刪除等事件。

其中:ConfigFile和ConfigFileExtension屬性不能同時使用,ConfigFile指出了配置文件的名字,例如,ConfigFile=”Config.txt”

ConfigFileExtension則是指明了和可執行程序集同名的配置文件的擴展名,例如,應用程序的名稱是”test.exe”,ConfigFileExtension=”txt”,則配置文件就應該是”test.exe.txt” ;

也可以不帶參數應用DOMConfiguratio():

 

  1. [assembly: log4net.Config.DOMConfigurator()] 

 

也可以在程序代碼中用DOMConfigurator類打開配置文件。類的構造函數需要一個FileInfo對象作參數,以指出要打開的配置文件名。這個方法和前面在程序集里設置屬性打開一個配置文件的效果是一樣的。

 

  1. log4net.Config.DOMConfigurator.Configure(  
  2. new FileInfo("TestLogger.Exe.Config"));  

 

DOMConfigurator 類還有一個方法ConfigureAndWatch(..), 用來配置框架并檢測文件的變化。

以上的步驟總結了和配置相關的各個方面,下面我們將分兩步來使用logger對象。

(2)創建或獲取日志對象

日志對象會使用在配置文件里定義的屬性。如果某個日志對象沒有事先在配置文件里定義,那么框架會根據繼承結構獲取祖先節點的屬性,最終的,會從根日志獲取屬性。如下所示:

Log4net.ILog log = Log4net.LogManager.GetLogger("MyLogger");

(3) 輸出日志信息

可以使用ILog的幾種方法輸出日志信息。你也可以在調用某方法前先檢查IsXXXEnabled布爾變量,再決定是否調用輸出日志信息的函數,這樣可以提高程序的性能。因為框架在調用如ILog.Debug(…)這樣的函數時,也會先判斷是否滿足Level日志級別條件。

 

  1. if (log.IsDebugEnabled) log.Debug("message");  
  2. if (log.IsInfoEnabled) log.Info("message); 

 

 

6  在程序中配置log4net

除了前面講的用一個配置文件來配置log4net以外,還可以在程序中用代碼來配置log4net框架。如下面的例子:

 

 

  1. // 和PatternLayout一起使用FileAppender   
  2. log4net.Config.BasicConfigurator.Configure(  
  3. new log4net.Appender.FileAppender(  
  4. new log4net.Layout.PatternLayout("%d   
  5. [%t]%-5p %c [%x] - %m%n"),"testfile.log"));  
  6. // using a FileAppender with an XMLLayout  
  7. log4net.Config.BasicConfigurator.Configure(   
  8. new log4net.Appender.FileAppender(   
  9. new log4net.Layout.XMLLayout(),"testfile.xml"));  
  10. // using a ConsoleAppender with a PatternLayout  
  11. log4net.Config.BasicConfigurator.Configure(   
  12. new log4net.Appender.ConsoleAppender(  
  13. new log4net.Layout.PatternLayout("%d   
  14. [%t] %-5p %c - %m%n")));  
  15. // using a ConsoleAppender with a SimpleLayout  
  16. log4net.Config.BasicConfigurator.Configure(  
  17. new log4net.Appender.ConsoleAppender(new   
  18. log4net.Layout.SimpleLayout())); 

 

盡管這里用代碼配置log4net也很方便,但是你卻不能分別配置每個日志對象。所有的這些配置都是被應用到根日志上的。

log4net.Config.BasicConfigurator 類使用靜態方法Configure 設置一個Appender 對象。而Appender的構造函數又會相應的要求Layout對象。你也可以不帶參數直接調用BasicConfigurator.Configure(),它會使用一個缺省的PatternLayout對象,在一個ConsoleAppender中輸出信息。如下所示:

 

 

  1. log4net.Config.BasicConfigurator.Configure(); 

 

在輸出時會顯示如下格式的信息:

 

0 [1688] DEBUG log1 A B C - Test

20 [1688] INFO log1 A B C - Test

當log4net框架被配置好以后,就可以如前所述使用日志功能了。

 

 

總結

使用log4net可以很方便地為應用添加日志功能。應用Log4net,使用者可以很精確地控制日志信息的輸出,減少了多余信息,提高了日志記錄性能。同時,通過外部配置文件,用戶可以不用重新編譯程序就能改變應用的日志行為,使得用戶可以根據情況靈活地選擇要記錄的信息。
 

【編輯推薦】

  1. c#.net實體類序列化方法
  2. 對象的序列化和反序列化
  3. 用C#實現文件夾拷貝
  4. C#中自增、自減操作符重載是個怎么回事兒
  5. 解析C#委托、時間和Lambda表達式
責任編輯:于鐵 來源: 互聯網
相關推薦

2011-06-01 15:54:41

log4net

2009-10-26 19:22:29

VB.NET使用Log

2009-08-24 18:14:35

ASP.NET調試Log4net

2024-05-21 11:09:17

2009-08-25 16:54:28

C# RichText

2024-12-04 08:17:49

日志框架NLog

2009-08-28 16:31:21

C# treeview

2009-09-08 14:54:40

C# listBox控

2009-08-28 17:01:43

C#構造函數

2024-11-12 07:28:39

2009-09-01 15:25:04

C# default關

2011-07-19 17:18:35

Objective-C Property

2011-08-02 15:55:31

Objective-C NSAutorele

2009-07-27 14:13:56

調用c#方法Java scriptASP.NET

2023-12-25 08:55:35

.NET日志框架Serilog

2024-03-06 09:24:50

AsyncAwaitC#

2011-08-19 13:51:12

2010-02-02 09:32:32

C++ typedef

2010-01-26 17:35:09

C++棧

2009-08-21 16:35:08

使用C#結合ADO.N
點贊
收藏

51CTO技術棧公眾號

国产精品激情自拍| 欧美videos中文字幕| 乱一区二区三区在线播放| 国产69精品久久久久久久久久| 成人三级毛片| 丁香五六月婷婷久久激情| 免费日韩av电影| 亚洲图片在线播放| 午夜久久一区| 亚洲精品少妇网址| 三上悠亚在线一区| 丰满诱人av在线播放| 久久久久国产精品厨房| 91精品久久久久| 国产网址在线观看| 国产一区二区三区四区五区| 欧美日韩激情在线| 日韩中字在线观看| 日韩精品黄色| www.久久精品| 国产裸体写真av一区二区| 国产真实夫妇交换视频| 欧美日韩激情在线一区二区三区| 日韩情涩欧美日韩视频| 99久久激情视频| 99福利在线| 国产乱淫av一区二区三区| 欧美老女人在线视频| 日本黄色免费观看| www.日日夜夜| 国产精品网址在线| 香蕉成人久久| 国产在线精品一区在线观看麻豆| 久久资源免费视频| 亚洲自拍第三页| 美女网站在线看| 国产精品成人免费精品自在线观看| 91人人爽人人爽人人精88v| 久久国产精品二区| 神马电影久久| 日韩一区二区免费在线电影| 国产淫片免费看| 欧美jizzhd欧美| 97久久精品人人做人人爽| 国产精品普通话| 日韩精品一区二区三| 99久久久久久中文字幕一区| 日韩精品在线视频| 蜜桃色一区二区三区| 国产三级一区| 一本色道久久加勒比精品| 中文精品无码中文字幕无码专区| 黄色大片在线看| 成人国产在线观看| 1卡2卡3卡精品视频| 无码人妻精品一区二区三区蜜桃91| 欧美激情偷拍| 最好看的2019的中文字幕视频| 少妇熟女视频一区二区三区| 成人黄色毛片| 色网综合在线观看| 97成人在线免费视频| 成人免费网址| 国产精品高清亚洲| 日韩精品久久久| 午夜国产在线视频| 国产白丝网站精品污在线入口| 国产精品欧美在线| 成人av网站在线播放| 伊人久久大香线蕉综合热线| 操人视频在线观看欧美| 中文字幕精品亚洲| 成人免费av| 国产亚洲精品美女| 制服 丝袜 综合 日韩 欧美| 中文字幕伦av一区二区邻居| 欧美不卡激情三级在线观看| 欧美一级特黄aaa| 亚洲伦理网站| 88在线观看91蜜桃国自产| 国产wwwxx| 91成人在线| 91久久久免费一区二区| 午夜肉伦伦影院| 色综合亚洲图丝熟| 欧美日韩国产在线看| 国内自拍在线观看| 9i看片成人免费高清| 欧美日韩免费一区| 国产黄页在线观看| 中文字幕在线视频久| 香蕉乱码成人久久天堂爱免费| 国产一线二线三线女| 91禁在线看| 精品久久久久久| 欧美国产亚洲一区| se01亚洲视频| 欧美日韩免费一区二区三区视频 | 一本色道69色精品综合久久| 91精品国产综合久久香蕉麻豆| 欧美视频国产视频| 日韩在线成人| 亚洲精品福利视频| 国产91丝袜美女在线播放| 亚洲系列另类av| 亚洲精品中文字| 亚洲人成人无码网www国产| 国产videos久久| 久久精品国产亚洲精品| 国产一级二级毛片| 国产精品一品| www.99re6| av天堂一区二区三区| 精品在线免费观看| 91久久久免费一区二区| 美美哒免费高清在线观看视频一区二区 | 日本中文字幕有码| 卡通动漫国产精品| 在线观看久久久久久| 任我爽在线视频| 今天的高清视频免费播放成人| 456亚洲影院| 中文有码在线播放| 国产成+人+日韩+欧美+亚洲| 麻豆传媒一区二区| 九义人在线观看完整免费版电视剧| 亚洲欧美日韩国产综合在线| 日本在线xxx| 日韩亚洲国产免费| 亚洲高清色综合| 亚洲毛片亚洲毛片亚洲毛片| 欧美午夜一区| 国产精品高潮粉嫩av| 精品国产av一区二区| 久久综合久久久久88| 国产福利片一区二区| 麻豆免费版在线观看| 欧美精品第1页| 亚洲永久无码7777kkk| 欧美 日韩 国产精品免费观看| 欧美中文字幕精品| 国产视频在线一区| 国产日韩精品视频一区| www.av毛片| 亚洲福利影视| 亚洲色图35p| 国产污视频在线观看| 久久国产人妖系列| 日韩精彩视频| 97人人在线视频| 制服丝袜激情欧洲亚洲| av男人的天堂av| 国产农村妇女精品一二区| 99国产视频| mm1313亚洲国产精品美女| 欧美亚洲禁片免费| 熟女人妻在线视频| 国内精品久久久久久久97牛牛 | 欧美一区二区三区人| 成人无码av片在线观看| 亚洲乱码久久| 国产精品乱子乱xxxx| 国产激情在线视频| 欧美日韩视频第一区| www.中文字幕av| 国产精品人人爽人人做我的可爱| 99久热re在线精品视频| 蜜桃视频在线观看免费视频网站www| 91福利国产精品| 日本黄色特级片| 国产亚洲在线观看| 国产一区二区三区四区hd| 欧美寡妇性猛交xxx免费| 日韩一区国产二区欧美三区| 日本黄色片免费观看| 看电视剧不卡顿的网站| 亚洲a∨一区二区三区| 欧美亚洲日本精品| 欧美精品一区视频| 久久久久性色av无码一区二区| 粉嫩13p一区二区三区| 免费看啪啪网站| 白嫩亚洲一区二区三区| 久久亚洲精品网站| 亚洲av少妇一区二区在线观看| 亚洲美女免费在线| 中文字幕1区2区| 99亚洲一区二区| 久久av一区二区| 欧美××××黑人××性爽| 最近2019年日本中文免费字幕| 888奇米影视| 亚洲精品国产视频| 最新国产精品自拍| 国产精品久久久久久模特| 欧美另类一区| 久久久久久久性潮| 久久伊人精品视频| 后进极品白嫩翘臀在线视频| 香蕉加勒比综合久久| 国产精品无码久久久久一区二区| 免费观看一级特黄欧美大片| 亚洲天堂av免费在线观看| 日本一区二区三区视频在线看| 欧美激情一级精品国产| 午夜精品在线播放| 性做久久久久久久久| 日本二区在线观看| 精品制服美女久久| 国产69精品久久久久久久| 精品国产91久久久久久浪潮蜜月| 91精品国产综合久久久久久蜜臀| 韩国成人免费视频| 亚洲天堂av高清| 国产成人精品一区二三区四区五区| 香港成人在线视频| 永久免费观看片现看| 国产99久久久精品| 五月天婷婷激情视频| 99久久亚洲精品| 高清视频一区二区三区| 麻豆福利在线观看| 国产亚洲欧洲高清一区| 亚洲精品中文字幕成人片 | 麻豆视频在线观看| 日本一区二区三区视频视频| 午夜免费福利网站| 免费亚洲网站| 强开小嫩苞一区二区三区网站| 精品国产一区二区三区不卡蜜臂| 国产成人一区二区三区电影| 精精国产xxxx视频在线中文版| 国产一区二区动漫| 成人免费视频国产免费麻豆| 欧美色图天堂网| 日韩字幕在线观看| 亚洲蜜臀av乱码久久精品| 小早川怜子久久精品中文字幕| 夫妻av一区二区| 黄大色黄女片18第一次| 日韩视频中文| 大地资源网在线观看免费官网| 你微笑时很美电视剧整集高清不卡| 97超碰人人看人人| 成人国产精品一区二区免费麻豆| 2020欧美日韩在线视频| 性欧美猛交videos| 深夜成人在线观看| 嫩草研究院在线观看| 精品av综合导航| 国产口爆吞精一区二区| 在线免费亚洲电影| 久久精品亚洲无码| 亚洲国产精品综合小说图片区| 四虎884aa成人精品| 久久精品视频一区二区三区| 捆绑裸体绳奴bdsm亚洲| 成人国产电影网| 18深夜在线观看免费视频| 麻豆专区一区二区三区四区五区| 丰满少妇被猛烈进入高清播放| 国产精品激情| 激情视频小说图片| 亚洲综合专区| 一区二区三区四区在线视频| 日本不卡二三区| 视频在线观看成人| 欧美限制电影| 色一情一区二区三区四区| 小早川怜子久久精品中文字幕| 麻豆传媒在线免费看| 日韩国产精品视频| 黄色av免费观看| 亚洲成人中文字幕| 黄色www视频| 精品久久国产老人久久综合| www香蕉视频| 日韩精品一区二区三区在线播放| av中文字幕免费| 日韩视频在线一区二区| 国产成人精品一区二区无码呦| 欧美一级二级在线观看| www.黄色av| 亚洲福利精品在线| 黄色av免费观看| 欧美视频在线一区| 国产孕妇孕交大片孕| 欧美一区二区三区四区久久| 成人h动漫精品一区二区无码| 日韩欧美高清在线| 欧美 日韩 国产 成人 在线 91 | 超级碰碰久久| 啪一啪鲁一鲁2019在线视频| 欧美美女日韩| 国产精品视频永久免费播放| 久久亚洲国产精品尤物| 国产一区二区色| 视频精品二区| 国产精品自拍首页| 九色精品91| 亚洲精品高清国产一线久久| 中文字幕一区二区三区乱码图片| 久久手机在线视频| 久久一区视频| 一二三级黄色片| 成人一区二区三区中文字幕| 国产激情视频网站| 中文av一区二区| av激情在线观看| 精品福利一区二区| 中文在线观看免费高清| 欧美日韩精品电影| 亚洲欧美黄色片| 尤物九九久久国产精品的特点 | 久久网福利资源网站| 草草视频在线观看| 国产精品久久久久久久久久小说| 国产精品一区二区精品| 久久人人九九| 亚洲乱码精品| 免费国产黄色网址| 精品一区二区三区不卡| 国产高清自拍视频| 亚洲蜜臀av乱码久久精品| 国产一级免费视频| 91精品免费在线观看| 亚洲美女性生活| 精品国产一区久久久| 在线毛片观看| 97久久天天综合色天天综合色hd| 综合国产视频| 毛片在线视频观看| 日本欧美久久久久免费播放网| 伊人久久久久久久久| 欧美韩国一区二区| 天堂网av手机版| 91精品国产91久久久久久最新毛片| 秋霞av在线| 欧美极品第一页| 天天综合在线观看| 日韩午夜视频在线观看| 亚洲午夜久久久久久尤物| 在线看的黄色网址| 久久综合久久鬼色中文字| 国产亚洲精品女人久久久久久| 欧美日韩性生活| 国产毛片在线看| 97成人精品区在线播放| 95精品视频| 日韩精品久久久毛片一区二区| 99精品热6080yy久久| 秋霞午夜鲁丝一区二区| 国产精品久久看| 久久久久久无码精品大片| 日韩电影网在线| 国模私拍视频在线播放| 亚洲free嫩bbb| 日韩欧美1区| 国产福利影院在线观看| 久久综合狠狠综合久久激情 | 亚洲视频在线观看视频| www国产在线观看 | 成人av色网站| 亚洲一区二区三区精品动漫| 日韩av电影一区| www在线观看免费视频| 日韩欧美极品在线观看| 偷拍自拍在线| 91高潮精品免费porn| 林ゆな中文字幕一区二区| 国产aaa免费视频| 成人丝袜18视频在线观看| 欧美精品色哟哟| 欧美精品在欧美一区二区少妇 | 国产亚洲精品日韩| 日韩伦理在线| 欧美主播一区二区三区美女 久久精品人 | 日韩欧美一起| 1卡2卡3卡精品视频| 欧美日本一区二区视频在线观看 | 欧美电影免费看| 你懂的视频在线一区二区| 亚洲在线播放| 亚洲区自拍偷拍| 欧美三级蜜桃2在线观看| 92国产在线视频| 成人精品视频久久久久| 91精品国产麻豆国产在线观看| 午夜福利123| 亚洲一区在线看| 亚洲黄色在线观看视频| 欧美性资源免费| 青草国产精品| 少妇欧美激情一区二区三区| 亚洲成人福利片| 激情福利在线| 成人久久久久爱| 欧美日韩1080p| 特大黑人巨人吊xxxx| 在线观看区一区二|