国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

動(dòng)手造輪子:實(shí)現(xiàn)一個(gè)簡(jiǎn)單的基于 Console 的日志輸出

共 15834字,需瀏覽 32分鐘

 ·

2021-03-30 17:29

Intro

之前結(jié)合了微軟的 Logging 框架和 Serilog 寫了一個(gè)簡(jiǎn)單的日志框架,但是之前的用法都是基于 log4net、serilog 的,沒有真正自己實(shí)現(xiàn)一個(gè)日志輸出,比如 Console、文件、數(shù)據(jù)庫、ES等,關(guān)于日志框架的設(shè)計(jì)可以參考之前的文章 動(dòng)手造輪子:寫一個(gè)日志框架

實(shí)現(xiàn)思路

把日志放在一個(gè)隊(duì)列中,通過隊(duì)列方式慢慢的寫,避免并發(fā)問題,同時(shí)異步寫到 Console 避免因?yàn)閷懭罩咀枞骶€程的執(zhí)行

輸出的格式如何定義呢,像 log4net/nlog/serilog 這些都會(huì)支持自定義日志輸出格式,所以我們可以設(shè)計(jì)一個(gè)接口,實(shí)現(xiàn)一個(gè)默認(rèn)日志格式,當(dāng)用戶自定義日志格式的時(shí)候就使用用戶自定義的日志格式

針對(duì)不同的日志級(jí)別的日志應(yīng)該使用不同的顏色來輸出以方便尋找不同級(jí)別的日志

使用示例

來看一個(gè)使用的示例:

LogHelper.ConfigureLogging(builder =>
{
    builder
        .AddConsole()
        //.AddLog4Net()
        //.AddSerilog(loggerConfig => loggerConfig.WriteTo.Console())
        //.WithMinimumLevel(LogHelperLogLevel.Info)
        //.WithFilter((category, level) => level > LogHelperLogLevel.Error && category.StartsWith("System"))
        //.EnrichWithProperty("Entry0", ApplicationHelper.ApplicationName)
        //.EnrichWithProperty("Entry1", ApplicationHelper.ApplicationName, e => e.LogLevel >= LogHelperLogLevel.Error)
        ;
});

var abc = "1233";
var logger = LogHelper.GetLogger<LoggerTest>();
logger.Debug("12333 {abc}", abc);
logger.Trace("122334334");
logger.Info($"122334334 {abc}");

logger.Warn("12333, err:{err}""hahaha");
logger.Error("122334334");
logger.Fatal("12333");

日志輸出如下:

log output

默認(rèn)的日志格式是 JSON 字符串,因?yàn)槲矣X得 JSON 更加結(jié)構(gòu)化,也會(huì)比較方便的去 PATCH 和日志分析,微軟的 Logging 框架也是在 .NET 5.0 中加入了 JsonConsoleFormatter,可以直接輸出 JSON 到控制臺(tái),如果需要也可以自定義一個(gè) Formatter 來實(shí)現(xiàn)自定義的格式化

實(shí)現(xiàn)源碼

使用 IConsoleLogFormatter 接口來自定義日志格式化

public interface IConsoleLogFormatter
{
    string FormatAsString(LogHelperLoggingEvent loggingEvent);
}

internal sealed class DefaultConsoleLogFormatter : IConsoleLogFormatter
{
    private static readonly JsonSerializerSettings _serializerSettings = new()
    {
        Converters =
        {
            new StringEnumConverter()
        },
        ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
    };

    public string FormatAsString(LogHelperLoggingEvent loggingEvent)
    {
        return loggingEvent.ToJson(_serializerSettings);
    }
}

實(shí)現(xiàn)的代碼比較簡(jiǎn)單,隊(duì)列的話使用了 BlockingCollection 來實(shí)現(xiàn)了一個(gè)內(nèi)存中的隊(duì)列

ConsoleLoggingProvider實(shí)現(xiàn)如下:

internal sealed class ConsoleLoggingProvider : ILogHelperProvider
{
    private readonly IConsoleLogFormatter _formatter;

    private readonly BlockingCollection<LogHelperLoggingEvent> _messageQueue = new();
    private readonly Thread _outputThread;

    public ConsoleLoggingProvider(IConsoleLogFormatter formatter)
    {
        _formatter = formatter;

        // Start Console message queue processor
        _outputThread = new Thread(ProcessLogQueue)
        {
            IsBackground = true,
            Name = "Console logger queue processing thread"
        };
        _outputThread.Start();
    }

    public void EnqueueMessage(LogHelperLoggingEvent message)
    {
        if (!_messageQueue.IsAddingCompleted)
        {
            try
            {
                _messageQueue.Add(message);
                return;
            }
            catch (InvalidOperationException) { }
        }

        // Adding is completed so just log the message
        try
        {
            WriteLoggingEvent(message);
        }
        catch (Exception)
        {
            // ignored
        }
    }

    public void Log(LogHelperLoggingEvent loggingEvent)
    {
        EnqueueMessage(loggingEvent);
    }

    private void ProcessLogQueue()
    {
        try
        {
            foreach (LogHelperLoggingEvent message in _messageQueue.GetConsumingEnumerable())
            {
                WriteLoggingEvent(message);
            }
        }
        catch
        {
            try
            {
                _messageQueue.CompleteAdding();
            }
            catch
            {
                // ignored
            }
        }
    }

    private void WriteLoggingEvent(LogHelperLoggingEvent loggingEvent)
    {
        try
        {
            var originalColor = Console.ForegroundColor;
            try
            {
                var log = _formatter.FormatAsString(loggingEvent);
                var logLevelColor = GetLogLevelConsoleColor(loggingEvent.LogLevel);
                Console.ForegroundColor = logLevelColor.GetValueOrDefault(originalColor);

                if (loggingEvent.LogLevel == LogHelperLogLevel.Error
                    || loggingEvent.LogLevel == LogHelperLogLevel.Fatal)
                {
                    Console.Error.WriteLine(log);
                }
                else
                {
                    Console.WriteLine(log);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
            finally
            {
                Console.ForegroundColor = originalColor;
            }
        }
        catch
        {
            Console.WriteLine(loggingEvent.ToJson());
        }
    }

    private static ConsoleColor? GetLogLevelConsoleColor(LogHelperLogLevel logLevel)
    {
        return logLevel switch
        {
            LogHelperLogLevel.Trace => ConsoleColor.Gray,
            LogHelperLogLevel.Debug => ConsoleColor.Gray,
            LogHelperLogLevel.Info => ConsoleColor.DarkGreen,
            LogHelperLogLevel.Warn => ConsoleColor.Yellow,
            LogHelperLogLevel.Error => ConsoleColor.Red,
            LogHelperLogLevel.Fatal => ConsoleColor.DarkRed,
            _ => null
        };
    }
}

為了方便使用和更好的訪問控制,上面的 ConsoleLoggingProvider 聲明成了 internal 并不直接對(duì)外開放,并且定義了下面的擴(kuò)展方法來使用:

public static ILogHelperLoggingBuilder AddConsole(this ILogHelperLoggingBuilder loggingBuilder, IConsoleLogFormatter? consoleLogFormatter = null)
{
    loggingBuilder.AddProvider(new ConsoleLoggingProvider(
        consoleLogFormatter ?? new DefaultConsoleLogFormatter()));
    return loggingBuilder;
}

DelegateFormatter

需要自定義的 Console 日志的格式的時(shí)候就實(shí)現(xiàn)一個(gè) IConsoleLogFormatter 來實(shí)現(xiàn)自己的格式化邏輯就可以了,不想手寫一個(gè)類?也可以實(shí)現(xiàn)一個(gè) Func<LogHelperLoggingEvent, string> 委托,內(nèi)部會(huì)把委托轉(zhuǎn)成一個(gè) IConsoleLogFormatter,實(shí)現(xiàn)如下:

internal sealed class DelegateConsoleLogFormatter : IConsoleLogFormatter
{
    private readonly Func<LogHelperLoggingEvent, string> _formatter;

    public DelegateConsoleLogFormatter(Func<LogHelperLoggingEvent, string> formatter)
    {
        _formatter = formatter ?? throw new ArgumentNullException(nameof(formatter));
    }

    public string FormatAsString(LogHelperLoggingEvent loggingEvent) => _formatter(loggingEvent);
}

擴(kuò)展方法:

public static ILogHelperLoggingBuilder AddConsole(this ILogHelperLoggingBuilder loggingBuilder, Func<LogHelperLoggingEvent, string> formatter)
{
    loggingBuilder.AddProvider(new ConsoleLoggingProvider(new DelegateConsoleLogFormatter(formatter)));
    return loggingBuilder;
}

More

在寫一些小應(yīng)用的時(shí)候,經(jīng)常會(huì)遇到這樣的場(chǎng)景,就是執(zhí)行一個(gè)方法的時(shí)候包一層 try...catch,在發(fā)生異常時(shí)輸出異常信息,稍微包裝了一個(gè)

public static Action<Exception>? OnInvokeException { getset; }

public static void TryInvoke(Action action)
{
    Guard.NotNull(action, nameof(action));
    try
    {
        action();
    }
    catch (Exception ex)
    {
        OnInvokeException?.Invoke(ex);
    }
}

原來想突出顯示錯(cuò)誤信息的時(shí)候,我會(huì)特別設(shè)置一個(gè) Console 的顏色以便方便的查看,原來會(huì)這樣設(shè)置,之前的 gRPC 示例項(xiàng)目原來就是這樣做的:

InvokeHelper.OnInvokeException = ex =>
{
    var originalColor = ForegroundColor;
    ForegroundColor = ConsoleColor.Red;
    WriteLine(ex);
    ForegroundColor = originalColor;
};

有了 Console logging 之后,我就可以把上面的委托默認(rèn)設(shè)置為 Log 一個(gè) Error(OnInvokeException = ex => LogHelper.GetLogger(typeof(InvokeHelper)).Error(ex);),只需要配置 Logging 使用 Console 輸出就可以了,也可以設(shè)置日志級(jí)別忽略一些不太需要的日志

LogHelper.ConfigureLogging(x=>x.AddConsole().WithMinimumLevel(LogHelperLogLevel.Info));

diff

References

  • https://github.com/WeihanLi/WeihanLi.Common
  • https://github.com/WeihanLi/WeihanLi.Common/blob/dev/src/WeihanLi.Common/Logging/ConsoleLoggingProvider.cs


往期精彩回顧




【推薦】.NET Core開發(fā)實(shí)戰(zhàn)視頻課程 ★★★

.NET Core實(shí)戰(zhàn)項(xiàng)目之CMS 第一章 入門篇-開篇及總體規(guī)劃

【.NET Core微服務(wù)實(shí)戰(zhàn)-統(tǒng)一身份認(rèn)證】開篇及目錄索引

Redis基本使用及百億數(shù)據(jù)量中的使用技巧分享(附視頻地址及觀看指南)

.NET Core中的一個(gè)接口多種實(shí)現(xiàn)的依賴注入與動(dòng)態(tài)選擇看這篇就夠了

10個(gè)小技巧助您寫出高性能的ASP.NET Core代碼

用abp vNext快速開發(fā)Quartz.NET定時(shí)任務(wù)管理界面

在ASP.NET Core中創(chuàng)建基于Quartz.NET托管服務(wù)輕松實(shí)現(xiàn)作業(yè)調(diào)度

現(xiàn)身說法:實(shí)際業(yè)務(wù)出發(fā)分析百億數(shù)據(jù)量下的多表查詢優(yōu)化

關(guān)于C#異步編程你應(yīng)該了解的幾點(diǎn)建議

C#異步編程看這篇就夠了


瀏覽 46
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 一本无码中文字幕| 中韩日美免费看的电影| 嫩BBB槡BBBB槡BBBB撒尿-百度| 欧美疯狂做受XXXXX高潮| 天堂在线中文网| 麻豆疯狂做受XXXX高潮视频| 色交视频| 中文字幕一区二区三区四虎在线 | 91高清无码视频| 综合视频一区| 久久无码黄片| 久久久久久网| 图片区小说区区亚洲五月| 国产欧美黄片| 中国精品77777777| 黄色一级生活片| 在线看A片| www.亚洲成人| 奇米影视狠狠干| 日韩欧美亚洲一区二区三区| 无码视频免费播放| 大香蕉最新国产2025| 一区二区三区四区五区在线| 97人妻精品一区二区三区视频| 骚逼影视| 亚洲男人av| 麻豆91精品91久久久停运原因| 国产免费视频69| 日韩三级片网站| 伊人久久免费视频| 日一日射一射| 日产精品久久久久| a片在线观看视频| 91精品91久久久中77777| 熊猫视频91| 婷婷五月天中文字幕| 午夜成人免费视频| 亚洲涩情91日韩一区二区| 91黑人丨人妻丨国产丨| av免费观看网址| 亚洲午夜福利一区二区三区| 色就是色欧美成人网| 五月av| 加勒比无码在线| 超碰人人草| 天天干天天日天天色| 99成人免费视频| 亚洲欧美不卡| 刘玥精品国产一区二区三区| 人人操人人操人人操人人操| 九一久色| 三级片男人天堂| 青青娱乐亚洲无| 北条麻妃无码| 超碰精品| 伊人久久大香| 大鸡巴视频在线观看| 无码AV中文字幕| 91三级电影| 六月婷婷网| 逼特逼在线视频| 精品免费一区二区三区四区| 欧一美一婬一伦一区?| 天堂无吗| 人人草人人看人人摸| 88av在线观看| 中文字幕你懂的在线三级| 加勒比日日综合| 91小电影| 在线观看免费黄色视频| 欧美一级片| 无码人妻丰满熟妇bbbb| 欧美老妇另类老屁XXX| 一区二区三区在线观看视频| 中文字幕不卡在线观看| 人妻精品一区二区| 国产一区二区三区无码| 国内老熟妇对白HDXXXX| 久久久人妻| 三级免费| 琪琪色在线视频| 闺蜜av| 一区二区三区免费播放| 免看一级a毛片一片成人不卡| 日韩,变态,另类,中文,人妻| 91视频第一页| 在线视频久| www,久久久| 国产农村乱婬片A片AAA图片| 天堂网2018| 骚逼自拍| 欧美插菊花综合网| 免费性片| 中文字幕在线免费观看电影| 黄色片视频免费| 翔田千里| 久久无码一区二区| 婷婷久久婷婷| 一区二区三区免费在线观看| 婷婷五月欧美| 亚洲国产成人91PORN| 亚洲av无码乱码| 亚洲欧美成人在线观看| 香蕉一区二区| 宗合久久| 思思操| 欧美婷婷五月天| 日韩欧美内射| 四川少扫搡BBBBB搡B| 人妻FrXXeeXXee护士| 久草中文视频| 久久久三级| 69视频在线观看| 五月婷婷丁香五月| 亚洲成人AV| 久久99久久99久久| 夜色福利网| 国产精品视频一区二区三区在线观看| 婷婷爱五月天| 日韩视频中文字幕在线| 自拍偷拍视频网| 安徽妇搡BBBB搡BBBB按摩| 色五月婷婷久久| 蜜桃视频网址| 亚洲精品久久久久久久久豆丁网 | 99在线免费观看| 久久精品欧美| 插进去综合图| 欧美男女日逼视频| 18禁片网站| 99久久精彩视频| 五月激情久久| 亚洲人人| 成人无码91| 四川少妇bbbbbbbbb| 91视频网站在线| 黄色视频久久| 少妇福利| 亚洲一级在线| 国产海角视频| 美国高清无码| 偷拍内射| 亚洲AV无码成人精品一区| 少妇探花| 这里只有精品久久| 成人中文字幕在线| 一级爱爱免费视频| 亚洲精品国产精品国自产观看| 强伦轩人妻一区二区三区最新版本更新内容 | 高清一区二区| 黄色插逼视频| 五月天婷婷在线视频| 青青色综合| 艹逼在线观看| 精品国产黄色| 欧美手机在线视频| 亚洲性爱网站| 思思热思思操免费视频| 免费观看黄色在线视频| 亚洲AV电影天堂| 四川BBB嫩BBBB爽BBBB| 中文字字幕在线中文| 操大爷影院| 亚洲无码成人网站| 9999久久久久| 婷婷黄色电影| 91伊人久热精品| 中文字幕无码在线观看视频| 日韩精品综合| 成人精品影视| 夜夜骚精品人妻av一区| 国产中文人人国际| 国产女人18水真多18精品| 艹逼网站| 天天插天天狠天天透| 无码人妻一区二区三区线花季传件| 东京热视频网站| 干日本少妇| 欧美视频一| 91无码人妻一区二区成人aⅴ| 欧美肉大捧一进一出小说| 超碰人人操人人爱| 亚洲色吧| 91在线观看免费视频| 中文字幕亚洲专区| 各种BBwBBwBBwBBw| 亚洲色图成人网| 操逼第二页| 夜夜狠狠躁日日躁| 好逼天天有| 国产成人精品一区二区三区视频| 啊啊啊在线| 国产一级a毛一级a做免费的视频l| 成人久久久久一级大黄毛片中国| 大香蕉亚洲网| 日韩色图在线观看| 成人激情四射网| 翔田千里91| 小泬BBBBBB免费看| jizz99| 亚洲秘无码一区二区三区观看| 熊猫视频91| 99视频免费在线| 日韩欧美亚洲一区二区三区| 中文字幕在线免费播放| 亚洲欧美成人网| 一区二区三区久久久久| 麻豆md0049免费| 琪琪色视频| www色色| 人人妻人人澡人人爽久久| 日本a片免费| 大香蕉熟女| 日韩黄| 久99久热| 久久高清无码视频| 天堂色| 人人操人人干人人妻| AV在线四季综合网站| 亚洲理伦| 暖暖爱视频免费| 成人福利影视| 人妻丰满熟妇av无码| 国产操逼小视频| 91禁樱桃在线| www.sesese| www99国产| 日韩中文字幕视频在线| 国产一区二区免费| 久久久久无码精品亚洲日韩| 麻豆精东一区二区欧美国产| 久热这里只有| 亚洲男人的天堂AV| 日韩无码动漫| A片免费在线观看| 亚洲第一a| 成人做爰黄A片免费看| 欧美特黄AAAAAAAAA片| 日本黄色A片| 丁香五月婷婷综合网| 韩国成人精品三级| 亚洲五月天在线| 9999久久久久| 亚洲欧美久久久久久久久久久久| 国产精品美女久久久久AV爽| 国产欧美综合一区二区三区| 黄片视频免费| 最新中文字幕AV| 国产丰满乱子伦无码| 97人妻精品一区二区三区视频| 国产三级片视频| 亚洲护士无码| 久久久69| 国产亲子乱XXXXinin| 国产成人精品AV在线观| 特级西西444www高清大胆免费看| 久久大陆| 中文AV在线播放| 黄色大片网站| 无码观看视频| av在线免费观看网址| 日韩A级毛片| 日韩性AV| 国产免费AV在线观看| 国产v视频| 亚洲AV无码专区一级婬片毛片 | 无码中文综合成熟精品AV电影| 国产精品永久久久久久久久久| 东京热在线免费观看| 久久黄色| 日韩精品视频免费| 激情丁香六月| 色交视频| 日韩不卡视频在线观看| 91足浴店按摩漂亮少妇| 色网在线观看| 亚洲AV无码成人精品区h麻豆| 日韩中文字幕网站| 中文字幕A片无码免费看| 久久久aaa| 三级片高清无码| 激情在线视频| 伊人在线综合| 日本一区二区三区在线观看网站| 国产熟妇婬乱一区二区| 人人艹人人艹| 亚洲最大福利视频| 91AV在线播放| 欧美一区二区三区在线播放| 在线中文字幕AV| 青娱乐青青草| 精品国产AV无码一区二区三区| 操操干| 久久黄色| 五月婷婷综合激情| 一卡二卡无码| 日韩免费在线观看一区入口| 激情婷婷网| 黄色免费大片| 欧美成人福利视频| 黄色视频在线观看免费网站 | 成人做爰黄A片免费看直播室动漫 中文字幕一区二区三区四虎在线 欧美熟妇精品一级A片视色 | 国产一区二区三区免费观看| 日逼www| 人妻丝袜蕾丝高跟双飞| 新版欧美内射大全| 亚洲精品99| 91在线电影| 怮交小拗女小嫩苞视频| 北条麻妃久久视频在线播放| 夜夜嗨Av禁果Av粉嫩AV懂色Av | 天堂国产一区二区三区| 日本性爱无码| 欧美性爱一级视频| 日本久热| 欧美亚洲视频| 青青草网站在线观看| 四川少妇BBBB槡BBBB槡| 欧美久久电影| 东京热视频免费观看| 男女午夜福利| 特级西西| 青娱乐国产视频| 日本三级片视频不卡| 无码国产+白浆| 亚洲天堂视频在线| 久久你懂的| 京东一热本色道久久爱| 国产清纯可爱美女自卫裸贷偷情 | 波多野结衣AV在线观看| 欧美一级婬片A片免费软件| 99A片| 蜜臀精品一区二区三区| 亚洲秘AV无码一区二区qq群| 91天天爽| 高清无码在线看| 大肉大捧视频免费观看| AV在线精品| 操B视频在线免费观看| 成人午夜福利视频| 亚洲日韩一区| 午夜乱轮| 激情六月婷婷| 你懂得视频| 在线观看黄色av| 日韩AV网站在线观看| 日本特级黄A片免费观看| 逼特逼视频网站| 免费做a爰片77777| 木下凛凛子AV888AV在线观看| 无码二区三区| 综合婷婷| 青青草原成人在线视频| 中文字幕日韩人妻| 欧美一区免费| 69av在线播放| 亚洲国产精品VA在线看黑人| 久久亚洲成人| 黄色片视频日韩| BBW老熟女BBw| 日韩视频在线观看一区| 99久久99九九99九九九| 亚洲图片在线| 国产XXXXX| 欧美精品网| 亚洲免费中文字幕| 亚洲精品自拍视频| 国产精品午夜福利| 国产成人三级在线播放| 亚洲天堂一区二区三区| 看免费黄色录像| 日批网站在线观看| 99在线观看视频在线高清| 亚洲AV无码免费| 亚洲在线观看网站| 丰满人妻一区二区三区蜜桃视频| 在线观看免费黄视频| 免费在线观看a| 午夜免费福利视频| 91丨国产丨精品丨丝袜| 亚洲乱乱| 影音先锋男人资源站| 水蜜桃视频在线播放| 天堂无码在线| 免费国产精品视频| 国产一页| 亚洲中文字幕有码| 91视频一区二区三区| 亚州视频在线观看| www.骚逼| 日韩日韩日韩日韩| 成人网肏逼视频| 欧美性高潮| 亚洲丁香五月激情| 日逼视频免费| 国产高清精品在线| 成人三级片在线播放| 色欲一区二区三区| 河南少妇搡BBBB搡BBBB| 欧美日韩字幕| 五月天黄色视频| 亚洲系列中文字幕| 激情一一区二区三区| 欧美色噜噜| 黄色电影天堂网站| 天天夜夜人人| 日韩性生活| a天堂视频| 99精品视频免费在线观看| 亚洲天堂无码在线| 色视频在线播放| 俺来了俺去了www色官网| 精品国产污污免费网站入口| 亚洲精品成人无码熟妇在线 | 东京热六区| 成人做爰100片免费观看视频| 国产欧美精品AAAAAA片| 久久久久久免费视频| 无码波多野结衣| 欧美一区二区三区在线观看| 黄色免费在线网站| 牛牛成人在线视频| 最新三级网站| 东北女人毛多又黑A片| 足浴店少妇69XXX| 91妻人人澡人人爽人人精品| 国产亲子乱A片免费视频| 国产一级a毛一级a毛视频在线网站) | 四川少妇BBB| 天天拍天天射| 欧美激情四射老司机| 麻豆三级片在线观看| 大香蕉伊人免费| 中文av在线播放| 欧美成人手机在线观看| 黄色日逼视频| 精品一区二区三区视频| 中文字幕精品综合| 小處女末发育嫩苞AV| 欧美在线视频a| 91国黄色毛片在线观看| 在线日韩av| av在线观看网站| 黄色在线免费观看| 国产探花在线观看| 久久午夜无码鲁片午夜精品男男| 超碰97在线免费观看| 国产成人免费观看视频| 亚欧毛片| 操操操网| 中文字幕在线播放AV| AV片在线观看| 国产一级自拍| www.zaixianshipin| 色老板最新网址| 手机看片1024你懂的| 青草免费视频| 一道本无码在线播放| 成人福利免费视频| 无码人妻一区二区一牛影视| 免费操逼电影| 日韩免费A| 91探花国产综合在线精品| 欧美一级网| 99视频| 欧美成人网址在线观看| 三上悠亚一区二区| 日韩精品人妻中文字幕第4区| 午夜激情操一操| 四川少妇搡BBBB搡BBB视频网 | 一区二区水蜜桃| 九九综合精品| 91你懂的| 中文在线字幕免费观看| 大香蕉综合闲人| 99热亚洲| 国产亚洲欧洲| 欧美大胆a| 日韩AV无码电影| 青娱乐91视频| 麻豆911精一区二区| 午夜精品久久久久久久99黑人| 国产探花| 国产极品无码| 久久免费精品| 国产在线视频一区二区| 91人人妻人人澡人人爽人人精品 | 日韩精品人妻中文字幕| 欧美艹逼视频| 欧美十区| 制服.丝袜.亚洲.中文豆花| 大地99中文在线观看| 无码高清视频在线观看| 天天久久| 午夜性爱剧场| 一区二区成人视频| 午夜美女视频| 影音先锋三级| 国产一级片在线| 日本免费在线黄色视频| 九九免费视频| 欧美偷拍精品| 日韩av免费在线| 色五月婷婷AV| 久草新在线| 97人人人人人人| 丰满人妻一区二区三区精品高清 | Av毛片| 成人五月天黄色电影| 免费无码婬片A片AAA毛片96| 午夜蜜桃人妻一区二区| 91高清无码视频| 亚洲国产一区二区三区四区| 悠悠色综合| 麻豆一区二区三区四区| 少妇人妻在线| AV性爱社区| 免费看黃色AAAAAA片| 熟女少妇一区二区三区| 黄色av网站免费| 激情av天堂| av高清| 国产区欧美去区在线| 亚洲加勒比久久88色综合| 日韩精品一区二区三区四区蜜桃视频 | 大鸡巴操小逼视频| 国产视频福利| 婷婷丁香五月激情| 久草毛片| 91成人A片| 久操免费在线| 国产成人午夜| 婷婷五月综合在线| 91探花在线播放| 在线看一区二区三区| 人人草人人摸| 欧美性猛交XXXX乱大交蜜桃 | 亚洲精品一区二区三区四区五区六区 | 精品久久久国产| 免费草逼网站| 中文字幕日韩无码片| 91你懂的| 爱爱成人视频| 国产丰满乱子伦无码| 午夜成人免费福利| 91夫妻交友视频| 亚洲免费在线播放| 久久久人妻熟妇精品无码蜜桃| 波多野结衣在线精品| 亚洲精品图片| 黄片网站免费观看| 国产一级免费| 精品色| 91精品婷婷国产综合| 无码电影视频| 国产av一区二区三区| 三级片无码在线播放| 国内精品久久久久久久| 婷婷色中文网| 夜夜躁狠狠躁| youjizzcom日本| 成人毛片在线观看| 亚洲五月天在线| 成人视频你懂的| 亚洲AV无码成人片在线| 五月天婷婷在线播放视频免费观看| 插菊花综合网1| 嫩BBB搡BBB槡BBB小号| 69视频免费观看| 日本AⅤ电影| 国产极品无码| 欧美狼友| 日日干夜夜撸| 骚逼AV| 操骚屄视频| av东方在线| 欧美做受高潮白| 亚洲在线无码播放| 在线中文字幕在线观看| 亚洲av在线观看| 中文字幕网址在线| 青青操网站| 午夜成人福利剧场| 操人视频网站| 日韩美女性爱| 天天插天天爽| 日韩大香蕉| 人人看人人摸人人| 免费看黄片,在线观看| eeuss一区二区| 国产高清中文字幕| 北条麻妃亚洲无码| 国产精品亚洲一区| 干欧美美女| 91日韩在线| 日韩欧美黄色| 黄色小网站在线观看| 97久久人人| 日韩中文字幕精品| 色婷婷一二三精品A片| 狠狠撸综合| 久草资源视频| 久久久久久久久久国产精品免费观看-百度 | 欧美疯狂做受XXXXX高潮| 91激情网| 美日韩无码视频| 天堂国产一区二区三区| 麻豆性交| 日韩aaaa| 中文字幕在线观看完整av| 99热这里只有精品9| 华女与黑人91A∨| 97视频在线观看免费| 伊人影院在线观看| 日韩夜夜操| 中文字幕第23页| 操鸡视频在线观看| 日韩三区在线| 亚洲影院第一页| 肏逼网站在线观看| 88AV视频| 91网站18| 天天操夜夜骑| 51妺妺嘿嘿午夜成人A片| 亚洲欧美一区二区三区在线| 亚洲最新中文字幕| 99久久婷婷国产精品2020| 在线免费观看无码视频| av超碰在线| 日韩在线观看av| 三级AV在线观看| 九月婷婷综合| 亚洲色婷婷久久精品AV蜜桃| 久久水密桃| 午夜无码鲁丝片午夜精品| 三级片久久| 91国产爽黄在线相亲| 丁香色婷婷| 夜夜狠狠擅视频| 青娱乐91| 一本色道久久88加勒比| 中文字幕无码视频在线观看 | 日韩av电影在线观看| 婷婷狠狠| 国产在线中文字幕| 丰满少妇一区二区三区| 免费一级a| 亚人精品中文字幕在线观看| 天堂俺去俺来也www久久婷婷 | jizz免费在线观看| 无码一区二区黑人猛烈视频网站| 操屄视频免费观看| 啪啪啪AV| 在线一区观看| 亚洲免费观看A∨中文| 国产激情精品视频| 欧美日韩伊人| 亚洲色婷婷久久精品AV蜜桃| 肏逼视频免费看| 人人操人人操人人操人人操人人操| 亚洲综合p| 韩国中文字幕HD久久精品| AV日逼网| 日韩人妻无码专区一区二区| 精品九九九| AV在线资源| 一级操逼视频| 亚洲无码二区| 亚洲第一黄色| 人人操超碰| 亚洲成人在线播放| 俺去俺来也在线www色官网| 国产视频久久| 精品乱子伦一区二区三区,亚洲国产成| 天天干夜夜爽| 精品第一页| 日韩成人在线观看| 一级A片免费黄色视频| 大香蕉现在视频中心一| 成人在线免费观看国产| 亚洲AVA| 久久无码黄片| www日韩无码| 亚洲激情视频网站| 久色入口| 夜夜撸天天日| 少妇BBBB| 999福利视频| 欧美黄色一级网站| 波多野结衣无码一区| 国产www视频| A色色| 欧美精品乱码99久久蜜桃 | 欧美高清视频| 国产成人无码区亚洲A片356p| AV中文在线观看| 黄色三级毛片| 春色av| 国产成人精品一区二三区熟女在线| 亚洲无码高清视频在线观看| 亚洲日韩久久| 久久久久久亚洲| 免费AV在线| 大香蕉现在视频中心一| 国产美女啪啪| 成人a片在线免费观看| 久久久女女女女999久久| 蜜柚Av| 粉嫩AV在线| 4388亚洲最大| 一区二区经典| 午夜综合在线| 伊人蕉久| 九九亚洲| 一区二区三区四区免费观看| 一区二区三区在线免费观看| 黄网免费在线观看| 免费黄片视频| 国产91人妻| 国产A片精品| 日操操| jizz18日本| 91大吊| av无码精品一区| 国产成人午夜精品无码区久久麻豆 | 青青三级片| 91丨熟女露脸| 俺去也AV| 91精品丝袜久久久久久| 91黄色视频在线播放| 久久久久久无码| 精品国产精品| 羽月希无码| 老熟女痒到不行-ThePorn| 大鸡巴在线观看| 丁香六月婷婷久久综合| 日韩三级在线免费观看| 大逼影院| 成人一级黄色片| 国产jizz| 中文字幕乱码中文字幕| 三级片无码视频| 丁香五月中文字幕| 日韩一级无码| 午夜免费播放观看在线视频| 国产99久久久精品| 黄色片成人| 99久久影院| 日韩在线一级| AV在线精品| 国产免费一区二区在线A片视频| 一纹A片免费观看| 99re视频精品| 成人毛片视频网站| 波多野59部无码喷潮| 国产69精品久久久久久| 国产黄色小电影| 九九九精品视频| 免费一级黄色片| 精品久久91| 一级草逼| 大香蕉75在线| 91抽插| 久久99精品久久久水蜜桃| 亚洲精品在线视频| 狠狠干| 中文字幕精品综合| 蜜桃AV在线观看| 日韩操屄视频| 丁香五月欧美激情| 亚洲艹| 国产精品色| 亚洲偷拍中文| 青娱乐国产av| 毛片导航| 尤物最新网址| 日韩高清一区| 88海外华人免费一区| 自拍偷拍福利视频网站| 99激情网| www九九九| 欧美一级黃色A片免费看小优视频 无码人妻精品一区二区三千菊电影 | 亚洲AV无码一区二区三区少妇| 波多一区| 91色逼| 欧美精品成人免码在线| 成人在线免费视频观看| 中文字幕浅井香舞被黑人俘虏 | 五夜福利成人视频| 大香蕉伊人免费| 一级A片黄色| 男人的天堂社区| 亚洲一区在线播放| 无码三级| 欧美日韩国产三级| 国产成人自拍偷拍视频| 欧美性小说| 欧美熟妇精品一级A片视色| 操久久| 免费肏屄| 青娱乐免费视频| 看a网站| 亚洲高清免费视频| 青青草成人免费在线视频| 亚洲黑人av| 久久久久久久久久成人永久免费视频| 无码狠狠躁久久久久久久91| 国产精品视频播放| 丁香五月亭亭| 深夜av| 婷婷深爱| 欧美级毛片一进一出| 麻豆91网站| 草久在线| 老婆被黑人杂交呻吟视频| www.国产在线观看| 中文字幕浅井香舞被黑人俘虏 | 免费看A级片| 在线视频A| 成年人黄色电影| 爽好紧别夹喷水网站| 国产精品熟女| 99热激情在线| 亚洲精品一区二区三区新线路| 无码人妻一区二区三区线花季传件| 乱伦无码高清麻豆视频一区二区 | 国产精品无码在线播放| 亚洲成人视频免费观看| 黄片视频在线观看| 国产精品一卡二卡三卡| 精品乱子伦| 99久久精品国产精品有折扣吗| 国产日韩欧美在线| 三级国产在线| AA丁香综合激情| 丁香五月激情网| 久久中文字幕免费| 成人做爰100片免费着| wwwsesese| 特级毛片| 波多野结衣av在线观看窜天猴| 亚洲欧洲高清无码| 国产美女全裸网站| 99免费视频在线观看| 大香蕉精品一区| 精品亚洲一区二区三区四区五区| 最新在线中文字幕| 无码欧美| 青青草视频91| 青娱乐亚洲精品| 69av在线播放| 老司机午夜电影| 色操网| 欧美黄片免费观看| 久草社区在线| 欧美国产第一页| 国产午夜福利在线| AV在线资源| 久久久久久久久黄色| 国产三级AV在线| 日韩三级片网站| 特级爱爱视频| 婷婷99狠狠躁天天| 亚洲AV成人无码久久精品麻豆| 日韩91在线视频| 久久久久久久久久久国产| 大荫蒂HD大荫蒂视频| 欧美狼友| 一级少女免费播放电视剧韩剧TV| 欧美丰满老熟妇XXXXX性| 韩国久久| 久视频在线观看| 亚洲456| 白虎高清无码大尺度免费在线观看| 一边做一边说国语对白| 色综合天天综合网国产成人网 | 亚洲第一天堂| 操b国产| 夜夜操夜夜| 18禁网站在线| 亚洲欧美激情小说另类| 女同久久另类99精品国产91| 亚洲无码影音先锋| 日韩大吊| 婷婷综合素质二区| 18禁在线播放| 国产男女无套免费| 又黄又爽无遮挡| 日韩中文视频| 久久一级A片| 国产一级婬片A片AAA樱花| 免费一级片| 97精品久久| 麻豆A∨在线| 肏逼网站在线观看| 欧美A色| 欧美成人无码片免费看A片秀色| 乱伦91视频| 国产精品大全| AV免费网站|