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

如何在ASP.NET Core 6中使用跟蹤偵聽器

譯文 精選
開發(fā) 開發(fā)工具
本文討論如何在ASP.NET Core 6使用跟蹤偵聽器,研究如何使用跟蹤偵聽器收集跟蹤消息,并使用ILogger將跟蹤輸出定向??到事件日志。

?譯者 | 李睿

審校 | 孫淑娟

開發(fā)人員可以利用ASP.NET Core 6中的跟蹤偵聽器為其應(yīng)用程序添加性能和調(diào)試工具。  

在處理使用ASP.NET Core 6構(gòu)建的應(yīng)用程序時,開發(fā)人員可能經(jīng)常希望使用跟蹤和日志記錄來監(jiān)控應(yīng)用程序的性能并診斷錯誤,還可以在生產(chǎn)環(huán)境中使用跟蹤來衡量應(yīng)用程序在運行時的執(zhí)行情況。  

本文討論如何在ASP.NET Core 6使用跟蹤偵聽器,研究如何使用跟蹤偵聽器收集跟蹤消息,并使用ILogger將跟蹤輸出定向??到事件日志。  

要使用本文中提供的代碼示例,應(yīng)該在系統(tǒng)中安裝Visual Studio 2022。

在Visual Studio 2022中創(chuàng)建ASP.NET Core Web API項目  

首先,在Visual Studio 2022中創(chuàng)建一個ASP.NET Core項目。按照以下步驟將在Visual Studio 2022中創(chuàng)建一個新的ASP.NET Core 6 Web API項目:  

(1)啟動Visual Studio 2022 IDE。  

(2)點擊“創(chuàng)建新項目”。  

(3)在“創(chuàng)建新項目”窗口中,從顯示的模板列表中選擇“ASP.NET Core Web API”。  

(4)單擊“下一步”。  

(5)在“配置新項目”窗口中,指定新項目的名稱和位置。  

(6)根據(jù)偏好,可以選擇選中“將解決方案和項目放在同一目錄中”復(fù)選框。  

(7)單擊“下一步”。  

(8)在接下來顯示的“附加信息”窗口中,確保選中“使用控制器...”復(fù)選框,因為在這示例中不會使用最少的API。將“身份驗證類型”保留為“無”(默認)。  

(9)確保未選中“啟用Docker”、“為HTTPS配置”和“啟用開放API支持”復(fù)選框,因為不會在此處使用任何這些功能。  

(10)單擊創(chuàng)建。  

在本文中,將使用這個ASP.NET Core 6 Web API項目來處理跟蹤偵聽器。  

什么是跟蹤?

與跟蹤主要事件的事件日志相比,跟蹤允許更完整地查看正在運行的應(yīng)用程序及其組件。日志包含結(jié)構(gòu)化或非結(jié)構(gòu)化時間戳數(shù)據(jù),這些數(shù)據(jù)顯示應(yīng)用程序中發(fā)生的事件的記錄。跟蹤提供了對單個請求及其處理方式的更多可見性。  

System.Diagnostics命名空間包含跟蹤類和調(diào)試類。跟蹤類用于生產(chǎn)環(huán)境,而調(diào)試類用于開發(fā)時。

跟蹤通常涉及以下三個階段:  

  • 檢測:編寫必要的代碼來捕獲相關(guān)信息。  
  • 跟蹤:將跟蹤消息寫入指定的目標,即事件日志、文本文件、數(shù)據(jù)庫表等。  
  • 分析:分析從跟蹤中收集的信息以確定應(yīng)用程序中的瓶頸。  

什么是跟蹤偵聽器?為什么需要它們?  

跟蹤偵聽器收集跟蹤消息、存儲它們,并將它們定向到適當?shù)哪繕耍缥谋疚募?NET提供了幾個跟蹤偵聽器,其中包括:  

  • ConsoleTraceListener——將跟蹤消息發(fā)送到控制臺窗口。  
  • DefaultTraceListener——將跟蹤消息發(fā)送到標準調(diào)試輸出。  
  • DelimitedListTraceListener——以分隔格式將跟蹤輸出發(fā)送到流、流編寫器或文本編寫器。  
  • EventLogTraceListener——將跟蹤消息發(fā)送到事件日志。  
  • TextWriterTraceListener——將跟蹤消息發(fā)送到文本文件。  
  • XmlWriterTraceListener——將跟蹤消息轉(zhuǎn)換為XML。  

System.Diagnostics.Debug和System.Diagnostics.Trace類可以將消息發(fā)送到跟蹤偵聽器,這些偵聽器又將消息路由到適當?shù)哪繕恕?/p>

在ASP.NET Core 6中使用配置文件創(chuàng)建跟蹤偵聽器  

開發(fā)人員可以使用配置文件或編寫自定義代碼來創(chuàng)建跟蹤偵聽器。下面顯示的代碼片段說明了如何使用應(yīng)用程序配置文件創(chuàng)建跟蹤偵聽器。  

<configuration>
  <system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="MyFirstListener"
        type="System.Diagnostics.TextWriterTraceListener"
        initializeData="TraceOutput.txt" />
        <remove name="Default" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

添加到Listeners集合的所有偵聽器都將接收跟蹤輸出。但是,可以使用偵聽器而不將其添加到偵聽器集合中。在這種情況下,使用偵聽器中的Write或WriteLine方法發(fā)送輸出。  

以下的代碼演示了一個偵聽器,該偵聽器未添加到偵聽器集合,但仍能夠?qū)⒏櫹l(fā)送到輸出窗口、文件或任何預(yù)配置的輸出。

TextWriterTraceListener myFirstListener = new
TextWriterTraceListener("Output.txt", "myFirstListener");
myFirstListener.WriteLine("This is a test message.");
myFirstListener.Flush();

在ASP.NET Core 6中創(chuàng)建自定義跟蹤偵聽器  

在大多數(shù)情況下,.NET 6附帶的跟蹤偵聽器將滿足要求。但是,如果開發(fā)人員想將跟蹤消息輸出到不同的目的地,可以實現(xiàn)自己的跟蹤偵聽器。  

要構(gòu)建自定義跟蹤偵聽器,應(yīng)該創(chuàng)建一個擴展TraceListener抽象類的類。TraceListener類中有幾個虛擬和抽象方法。開發(fā)人員至少應(yīng)該實現(xiàn)Write和WriteLine方法。自定義跟蹤偵聽器如下所示:  

public class CustomTraceListener : TraceListener
{
    public CustomTraceListener(ILoggerFactory loggerFactory)
    {
    }
    public override void Write(string? message, string? category)
    {           
    }  
    public override void Write(string? message)
    {           
    }
    public override void WriteLine(string? message)
    {           
    }
}

因此,自定義跟蹤偵聽器類必須具有參數(shù)構(gòu)造函數(shù)以及Write和WriteLine方法。  

開發(fā)人員還需要一個表示記錄器的ILogger實例、一個創(chuàng)建記錄器的ILoggerFactory和一個StringBuilder來存儲跟蹤消息,然后再將它們發(fā)送到日志目標。

private readonly ILoggerFactory _loggerFactory;
private readonly ILogger _iLogger;
private readonly StringBuilder _stringBuilder = new();

開發(fā)人員可以利用依賴注入在構(gòu)造函數(shù)中注入ILoggerFactory的實例,然后使用該實例創(chuàng)建ILogger的實例。

public CustomTraceListener(ILoggerFactory loggerFactory)
{
   _loggerFactory = loggerFactory;
   _iLogger = loggerFactory.CreateLogger(nameof(CustomTraceListener));
}

下面是Write和WriteLine方法的最小實現(xiàn):  

public override void Write(string? message, string? category)
{
     _stringBuilder.Append(message + "-" + category);
}
public override void Write(string? message)
{
     _stringBuilder.Append(message);
}
public override void WriteLine(string? message)
{
   _stringBuilder.AppendLine(message);
   _iLogger.LogInformation(_stringBuilder.ToString());
   _stringBuilder.Clear();
}

ASP.NET Core 6中完整的自定義跟蹤偵聽器示例  

以下是自定義跟蹤偵聽器的最小實現(xiàn)的完整源代碼,以供參考。  

using System.Collections.Concurrent;
using System.Diagnostics;
using System.Text;
namespace TraceListenerDemo
{
    public class CustomTraceListener : TraceListener
    {
        private readonly ILoggerFactory _loggerFactory;
        private readonly ILogger _iLogger;
        private readonly StringBuilder _stringBuilder = new();
        public CustomTraceListener(ILoggerFactory loggerFactory)
        {
            _loggerFactory = loggerFactory;
            _iLogger =
             loggerFactory.CreateLogger(nameof(CustomTraceListener));
        }
        public override void Write(string? message, string? category)
        {
            _stringBuilder.Append(message + "-" + category);
        }
        public override void Write(string? message)
        {
            _stringBuilder.Append(message);
        }
        public override void WriteLine(string? message)
        {
            _stringBuilder.AppendLine(message);
            _iLogger.LogInformation(_stringBuilder.ToString());
            _stringBuilder.Clear();
        }
     }
}

在Program.cs文件中注冊自定義跟蹤偵聽器  

要使用自定義跟蹤偵聽器,應(yīng)該使用以下代碼將其注冊到Listeners集合。  

var loggerFactory = app.Services.GetRequiredService<ILoggerFactory>();
Trace.Listeners.Add(new LoggerTraceListener(loggerFactory));

因為自定義跟蹤偵聽器已經(jīng)添加到偵聽器集合中,所以它將捕獲運行時生成的所有跟蹤消息,并將輸出發(fā)送到記錄器。它還將發(fā)送在應(yīng)用程序中顯式發(fā)送的任何跟蹤消息(就像在前面的myFirstListener示例中所做的那樣)。  

因此,添加到Listeners集合的任何偵聽器都可以捕獲運行時生成的跟蹤以及在應(yīng)用程序中顯式發(fā)送的任何跟蹤消息。但是,如果未將跟蹤偵聽器添加到集合中,則它只能發(fā)送在應(yīng)用程序中顯式發(fā)送的跟蹤消息。它不會捕獲運行時生成的任何跟蹤消息。  

使用自定義跟蹤偵聽器時,必須記住關(guān)閉或刷新跟蹤偵聽器以確保清空輸出緩沖區(qū)。可以利用StringBuilderCache類來優(yōu)化使用StringBuilder的代碼(在CustomTraceListener類中)。

原文標題:??How to work with trace listeners in ASP.NET Core 6???,作者:Joydip Kanjilal?

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2021-02-06 21:40:13

SignalR通訊TypeScript

2021-03-17 09:45:31

LazyCacheWindows

2021-02-02 16:19:08

Serilog日志框架

2021-01-31 22:56:50

FromServiceASP

2021-02-28 20:56:37

NCache緩存框架

2021-03-10 09:40:43

LamarASP容器

2021-02-03 13:35:25

ASPweb程序

2021-01-07 07:39:07

工具接口 Swagger

2021-01-28 22:39:35

LoggerMessa開源框架

2021-03-03 22:37:16

MediatR中介者模式

2021-02-07 17:29:04

監(jiān)視文件接口

2021-06-22 16:59:56

微軟.NETC# 軟件開發(fā)

2021-01-26 14:57:00

中間件應(yīng)用模塊化

2021-01-04 05:44:54

框架日志

2021-04-12 07:03:10

輕量級模塊化框架

2017-10-20 08:52:11

內(nèi)存緩存并發(fā)模式Linux

2009-02-05 14:02:46

SmtpMail發(fā)送郵件ASP.NET

2021-04-14 07:35:12

Json格式化日期

2021-11-01 14:52:38

ElasticSear索引SQL

2021-01-15 05:38:28

ASPHttp端口
點贊
收藏

51CTO技術(shù)棧公眾號

夜夜嗨aⅴ一区二区三区| 催眠调教后宫乱淫校园| 国产黄大片在线观看画质优化| 狠狠色丁香久久婷婷综| 欧美极品在线视频| 少妇光屁股影院| 精品国产18久久久久久二百| 亚洲成av人片www| 日韩精品欧美专区| 亚洲精品免费在线观看视频| 免费视频最近日韩| 久久久久成人网| 日本精品久久久久中文| 精品国产午夜肉伦伦影院| 欧美色中文字幕| 亚洲美免无码中文字幕在线| 在线免费观看黄色网址| 99精品黄色片免费大全| 91精品国产综合久久香蕉最新版| 日韩精品一区二区在线播放 | 韩日午夜在线资源一区二区| 一级片视频播放| 国产日韩视频| 欧美噜噜久久久xxx| 国产成人一区二区在线观看| 黑色丝袜福利片av久久| 7777精品久久久大香线蕉| 中国丰满熟妇xxxx性| 麻豆网站在线| 国产欧美一区二区在线| 精品视频一区二区三区四区| 国产福利资源在线| 精久久久久久久久久久| 国产精品第七十二页| 日韩激情在线播放| 91在线公开视频| 小嫩嫩12欧美| 日韩高清a**址| 激情av中文字幕| 999色成人| 欧美日韩在线直播| 久久精品免费网站| 日韩免费电影| 一本大道av伊人久久综合| 六月婷婷在线视频| 国内在线视频| 亚洲国产日韩在线一区模特| 精品一区二区三区毛片| 老司机在线视频二区| 国产精品久久久久三级| 亚洲一区二区精品在线观看| 网友自拍视频在线| 国产精品国产自产拍高清av王其 | 香蕉成人伊视频在线观看| 嫩草影院中文字幕| 国产一线二线在线观看| 亚洲国产日韩在线一区模特| 日韩一级片免费视频| heyzo高清在线| 亚洲成人精品在线观看| 免费毛片网站在线观看| 蜜桃av在线播放| 色综合久久中文字幕| 美女网站免费观看视频| 久久久精品一区二区毛片免费看| 欧美日本韩国一区| 日本xxxx免费| 日韩啪啪网站| 中国china体内裑精亚洲片| 国产精品18在线| 亚洲色图网站| 国内免费久久久久久久久久久| 久久丫精品久久丫| 国产精品久久久久9999高清| 国产成人黄色av| 91成品人影院| 成人做爰69片免费看网站| 国产精品二区三区| 青青色在线视频| 国产精品美女久久久久久久久| 综合操久久久| 黄色aa久久| 精品视频一区三区九区| 色婷婷综合在线观看| 91精品尤物| 亚洲欧美日韩天堂一区二区| 在线观看天堂av| 伊人久久婷婷| 国产成人精品视频在线| 国产www视频| 久久人人爽爽爽人久久久| 伊人久久大香线蕉成人综合网| 免费av不卡在线观看| 在线观看国产精品网站| 97免费公开视频| 国产精品一区二区av日韩在线| 美女久久久久久久| 日韩黄色一级视频| 国产91精品免费| 四虎影视永久免费在线观看一区二区三区| 麻豆网站视频在线观看| 色偷偷久久一区二区三区| 亚洲三级在线视频| 欧美久久精品一级c片| 欧美精品精品精品精品免费| 中文字幕1区2区3区| 成人免费毛片片v| 亚洲视频在线二区| 自拍网站在线观看| 日韩精品在线一区| 粉嫩精品久久99综合一区| 亚洲毛片网站| 2014亚洲精品| 自拍视频在线网| 欧美日韩亚洲一区二区| 99久久久无码国产精品性波多 | 不卡av在线免费观看| 在线免费观看成人| 桃色一区二区| 亚洲国产精品yw在线观看 | 国产精品秘入口| 午夜欧美一区二区三区在线播放| 日本高清一区二区视频| 欧美综合另类| 青青草原成人在线视频| 婷婷丁香一区二区三区| 一区二区三区免费在线观看| 天天色天天综合网| av资源久久| 国产a∨精品一区二区三区不卡| 蜜桃av噜噜一区二区三区麻豆 | 在线观看亚洲欧美| 成人禁用看黄a在线| 久久久久久久久影视| 久久久久伊人| 中文字幕一区二区三区电影| 波多野结衣高清视频| 26uuuu精品一区二区| 日本在线xxx| 精品视频自拍| 7777免费精品视频| 亚洲日本在线播放| 福利视频一区二区| 亚洲成人日韩在线| 国产美女一区| 日韩精品一线二线三线| 欧美日韩在线精品一区二区三区激情综合 | 免费黄视频在线观看| 欧美视频导航| 国产一区免费| 日韩免费va| 亚洲人成网在线播放| 无码人妻av一区二区三区波多野| 国产亚洲精品免费| 深夜黄色小视频| 国产精品久久久久久麻豆一区软件| 国产在线观看一区二区三区| 黄色在线播放网站| 欧美tickling网站挠脚心| 国产乱码久久久久久| 久久亚洲捆绑美女| 日韩一区二区三区不卡视频| 四季av一区二区三区免费观看| 91精品久久久久久久久久入口 | 疯狂做受xxxx欧美肥白少妇| 免费毛片视频网站| 美女视频黄 久久| 欧美交换配乱吟粗大25p| 中文久久电影小说| 4438全国成人免费| 中文日本在线观看| 欧美一二三区在线观看| 好吊操这里只有精品| 国产视频一区二区三区在线观看| 青青青在线视频免费观看| 97精品视频| 国产精品久久久久久免费观看 | 欧美男男青年gay1069videost| 久草综合在线视频| 91色porny在线视频| 亚洲一区二区三区观看| 欧美日本三区| 欧美精品一区在线| 亚州精品国产| 2020久久国产精品| 欧美成人精品一区二区男人看| 日韩久久精品一区| 波多野结衣视频在线看| 亚洲啪啪综合av一区二区三区| 免费的av网站| 国内精品伊人久久久久av影院| 男女私大尺度视频| 久久久久久久久99精品大| 久久波多野结衣| 亚洲最大的免费视频网站| 777777777亚洲妇女| 成人在线直播| 亚洲午夜激情免费视频| 亚洲奶汁xxxx哺乳期| 欧美喷潮久久久xxxxx| 日本五十熟hd丰满| 亚洲天堂福利av| av直播在线观看| 国产精品自拍在线| 激情 小说 亚洲 图片: 伦| 亚洲高清av| 桥本有菜av在线| 国内黄色精品| 精品在线不卡| 97久久精品| 91色精品视频在线| 秋霞国产精品| 欧美专区在线视频| aa国产成人| 精品视频9999| 好吊日视频在线观看| 在线亚洲国产精品网| 欧美高清电影在线| 亚洲第一页自拍| 99久久精品日本一区二区免费| 欧美特级限制片免费在线观看| 久久久久久久久久久久久久av| 亚洲自拍偷拍九九九| 欧美精品久久久久久久久46p| 欧美国产欧美亚州国产日韩mv天天看完整| 精品少妇人妻av一区二区三区| 激情小说亚洲一区| 免费看成人av| 欧美大黑帍在线播放| www.四虎在线| 中文字幕有码无码人妻av蜜桃| 黄色av电影在线观看| 亚洲欧洲日本在线| 久久婷婷五月综合| 久久久久久亚洲综合影院红桃 | 欧美精品一区二区三区一线天视频 | 欧美国产日本| 视频一区二区三区在线观看| 九热爱视频精品视频| 精品一卡二卡三卡四卡日本乱码| 9l视频自拍九色9l视频成人| 91精品国产91久久久久青草| 久久久精品区| 超碰国产精品久久国产精品99| 视频精品二区| 国产精品国产一区二区| 亚洲高清999| 国产精选一区二区| 欧美jizz19性欧美| 欧美成熟毛茸茸复古| 亚洲8888| 日韩av一区二区三区在线 | 99国产精品99久久久久久| 国产黑丝在线观看| 91丝袜美腿高跟国产极品老师| 完美搭档在线观看| 久久久高清一区二区三区| 无码国产69精品久久久久同性| 久久影院午夜论| 国产18无套直看片| 中文字幕一区二区三区不卡| 日韩欧美123区| 亚洲一区二区三区自拍| 日产精品久久久久久久| 欧美视频裸体精品| 亚洲一区二区在线免费| 亚洲精品aⅴ| 国产九色精品| 九九综合久久| 在线免费一区| 欧美熟妇交换久久久久久分类 | 伊人精品一区| 日本亚洲欧洲精品| 亚洲欧美网站在线观看| 大陆av在线播放| 久久久综合网| 亚洲综合123| 99国产精品99久久久久久| 少妇精品无码一区二区免费视频| 亚洲三级免费电影| 日韩美女一级片| 欧美三级午夜理伦三级中视频| 99久久婷婷国产一区二区三区| 亚洲国产一区二区三区在线观看 | av中文字幕免费在线观看| 亚洲福利在线视频| 爱久久·www| 欧美精品精品精品精品免费| 国产超碰精品| 91久久精品国产91久久性色tv| 亚洲素人在线| 男女裸体影院高潮| 日韩制服丝袜先锋影音| 麻豆免费在线观看视频| 中文字幕乱码久久午夜不卡 | 久久国产麻豆精品| 人妻互换一二三区激情视频| 国产午夜亚洲精品羞羞网站| 久久久久久福利| 欧美少妇一区二区| 视频一区二区三区在线看免费看| 日韩中文字幕在线视频播放| 性欧美xxx69hd高清| 999国产在线| 成人综合专区| 日韩久久一级片| 国产sm精品调教视频网站| 欧美xxxooo| 日本韩国一区二区| 天天摸天天干天天操| 九九九热精品免费视频观看网站| 欧美xnxx| 日本视频一区在线观看| 亚洲三级毛片| 三级黄色片免费看| 国产精品无人区| 在线免费观看av网址| 亚洲黄色www网站| 女同一区二区免费aⅴ| 成人av在线网址| 久久免费av| 日本特黄a级片| 国产网站一区二区三区| 天天操夜夜操视频| 亚洲国产高清福利视频| 日本在线视频网址| 91成人在线看| 欧美激情无毛| 99精品视频免费版的特色功能| 亚洲欧美在线aaa| 在线免费观看视频网站| 亚洲片在线资源| 毛片无码国产| 久久伊人一区二区| 欧美在线综合| 国产精品成人一区二区三区电影毛片| 午夜欧美2019年伦理| 亚洲乱码精品久久久久..| 欧美日韩国产第一页| 亚洲伊人影院| 欧美精品久久久久久久自慰| 成人小视频免费在线观看| 精品无码m3u8在线观看| 亚洲精品在线免费播放| 国产黄大片在线观看| 麻豆视频成人| 肉丝袜脚交视频一区二区| 谁有免费的黄色网址| 色狠狠色狠狠综合| 亚洲成人三级| 91夜夜揉人人捏人人添红杏| 亚洲字幕久久| 无码人妻一区二区三区在线| 午夜不卡在线视频| 九一国产在线| 成人h视频在线观看播放| 欧美日韩 国产精品| 无码人妻精品一区二区三区99不卡| 亚洲成人资源网| 九色在线观看视频| 91精品久久久久久| 欧美激情一级片一区二区| 久久精品综合视频| 在线亚洲人成电影网站色www| av在线播放网| 91高跟黑色丝袜呻吟在线观看| 亚洲欧洲日本mm| 国产免费无遮挡吸奶头视频| 欧美另类变人与禽xxxxx| 怡红院红怡院欧美aⅴ怡春院| 精品999在线观看| 日韩精品乱码免费| 国产精品久久久久久久精| 亚洲高清色综合| 日韩网站中文字幕| 艳母动漫在线观看| av在线播放一区二区三区| 成人a v视频| 操人视频在线观看欧美| 全国精品免费看| 久久久久久久久久久久久久久国产 | 日韩中文视频| 日本免费成人网| 日本一区二区三区久久久久久久久不| 国产精品乱码久久久| 91精品国产色综合久久不卡98| 日韩精品免费一区二区三区| 亚洲少妇一区二区| 欧美在线视频全部完| gogo高清午夜人体在线| 一区二区不卡视频| 91丨porny丨蝌蚪视频| 国产一区二区在线视频观看| 2019精品视频| 亚洲国产老妈| 国产又粗又猛又爽视频| 日韩精品一区二区三区老鸭窝 | 欧美色综合影院| 国产美女高潮在线| 成人手机在线播放|