精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

少妇av在线| 国产又粗又爽视频| 国产95亚洲| 亚洲精品你懂的| 成人在线国产精品| 国产精品自拍视频一区| 国产一区国产二区国产三区| 欧美二区在线观看| 国产h视频在线播放| 99中文字幕一区| 丰满放荡岳乱妇91ww| 国产精品v日韩精品| 午夜国产福利一区二区| 国产香蕉精品| 91精品国产综合久久久久久漫画 | 亚洲国产精品视频| 欧美一区二区三区在线免费观看 | 日韩国产高清视频在线| 天天视频天天爽| 波多野结衣精品| 国产精品福利一区| 久久久久一区二区三区| 国产浮力第一页| 日本不卡一区二区三区| 68精品久久久久久欧美| 黄色一级片中国| 日韩精品四区| 亚洲欧美福利视频| 无码人妻精品一区二区三区99不卡| 国产综合色区在线观看| 亚洲自拍欧美精品| 99久re热视频精品98| 免费在线毛片| 99国内精品久久| 成人欧美一区二区三区视频xxx| 日韩乱码一区二区三区| 午夜一级久久| 97在线免费观看视频| 欧美精品入口蜜桃| 亚洲国产精品久久久天堂| 国产一区二区动漫| 69精品无码成人久久久久久| 日韩av不卡一区| 亚洲国产97在线精品一区| 性色av浪潮av| 欧美久久亚洲| 欧美一区二区美女| 91视频福利网| 精品一区二区三区视频在线播放 | 456国产精品| 国产精品99无码一区二区| 影音先锋日韩在线| 欧美精品在线免费| 破处女黄色一级片| 欧美精品激情| 欧美激情视频播放| 精品无码免费视频| 亚洲成人资源| 91高清免费视频| 日韩人妻精品中文字幕| 久久一综合视频| 国产精品激情av电影在线观看 | 精品女同一区二区| 麻豆短视频在线观看| 51亚洲精品| 亚洲成在人线av| 精品人妻一区二区三区香蕉| 亚洲最好看的视频| 中日韩美女免费视频网址在线观看| 欧美午夜激情影院| 久久精品亚洲人成影院| 欧美大胆在线视频| 国产精品18p| 新67194成人永久网站| 国产成人精品视频在线| 中文字幕在线一| 精品一区二区三区不卡 | 亚洲情趣在线观看| 久草视频这里只有精品| 午夜影院在线播放| 欧美视频一区二| 老女人性生活视频| 日韩在线你懂的| 中文字幕亚洲一区二区三区| h色网站在线观看| 亚洲高清在线| 国产精品免费网站| 亚洲第一第二区| 久久综合久久综合九色| 神马影院我不卡| 视频在线观看入口黄最新永久免费国产| 亚洲午夜久久久| av动漫在线观看| 91亚洲精品在看在线观看高清| 精品少妇一区二区三区视频免付费| 内射中出日韩无国产剧情| 日产精品一区二区| 久久久久久国产精品久久| 午夜精品免费观看| 国产电影精品久久禁18| 女女同性女同一区二区三区91| 女女色综合影院| 精品久久久久国产| 精品国产乱码久久久久久1区二区 91网址在线观看精品 | 久久久久电影| 欧美亚洲国产另类| 国产黄a三级三级看三级| 久久先锋影音av| 第九区2中文字幕| 欧美影视资讯| 亚洲国产精品一区二区久| frxxee中国xxx麻豆hd| 99综合精品| 999热视频| 欧洲美女少妇精品| 欧美性少妇18aaaa视频| 国产xxx在线观看| 欧美好骚综合网| 日本亚洲欧洲色| 欧美一级淫片免费视频魅影视频| 国产精品久久国产精麻豆99网站| 日韩av片在线看| 亚洲网一区二区三区| 中文字幕亚洲欧美日韩高清 | 欧美性色黄大片| 一区二区三区少妇| 黄色成人精品网站| 亚洲综合大片69999| 亚洲精品承认| 欧美色图免费看| 波多野结衣片子| 亚洲尤物在线| 国产视频精品网| 欧美性爽视频| 日韩亚洲欧美高清| 国产中文av在线| 久久精品国产清高在天天线| 久久久久一区二区| 自拍视频在线看| 精品亚洲一区二区三区| 日本道在线观看| av午夜一区麻豆| 国产伦精品一区二区三区四区视频_ | 欧美在线免费视屏| 91在线无精精品白丝| 老司机精品导航| 日本精品二区| 精品国模一区二区三区| 亚洲人免费视频| 老熟妇一区二区三区| 久久久高清一区二区三区| wwwxxx黄色片| 成久久久网站| 成人黄色短视频在线观看| 日韩成人影视| 日韩欧美一区在线观看| 久久婷婷国产麻豆91| 不卡的看片网站| 131美女爱做视频| 日韩大片在线免费观看| 欧美一级高清免费播放| 久青青在线观看视频国产| 欧美亚洲综合一区| 久久嫩草捆绑紧缚| 国产高清在线精品| 国产精品自拍片| 九色精品国产蝌蚪| 国产日韩换脸av一区在线观看| 久久黄色美女电影| 精品国产三级a在线观看| 日韩精品久久久久久久酒店| 久久午夜老司机| 中文字幕成人在线视频| 欧美高清不卡| 久草精品电影| 九九热这里有精品| 欧美高清视频在线播放| 亚洲人成色777777老人头| 欧美主播一区二区三区美女| 日韩视频中文字幕在线观看| 成人午夜激情片| 日韩一级片播放| 亚洲精品中文字幕乱码| 久久av一区二区| 国产欧美自拍| 久久久女女女女999久久| 黄色大片在线看| 日韩欧美色综合网站| 日韩无码精品一区二区三区| 国产亚洲一区二区三区四区 | 成人香蕉社区| 国产国产精品人在线视| 尤物视频在线看| 亚洲免费av片| www.久久精品.com| 91极品美女在线| 久久综合色综合| 中文字幕免费在线观看视频一区| 欧美熟妇精品一区二区| 久久一二三区| 男人的天堂狠狠干| 国产高清一区| 欧美日韩国产精品一卡| 亚洲视频国产| 国产欧美精品一区二区三区-老狼| 国产黄色大片在线观看| 中文一区二区视频| 亚洲 欧美 自拍偷拍| 欧美一区二区不卡视频| 亚洲图片欧美日韩| 天天做天天摸天天爽国产一区| 又嫩又硬又黄又爽的视频| 99re热这里只有精品视频| 国产精品久久久久久久av福利| 久久三级福利| 人人妻人人添人人爽欧美一区| 99久久99久久精品国产片果冰| 久久青青草原一区二区| 第一区第二区在线| 亚洲iv一区二区三区| 姬川优奈av一区二区在线电影| 久久频这里精品99香蕉| www视频在线看| 最近2019年中文视频免费在线观看| 熟妇人妻系列aⅴ无码专区友真希| 欧美一级电影网站| 亚洲一区二区三区高清视频| 色哟哟一区二区| 日韩免费在线视频观看| 亚洲一区二区三区四区在线观看 | 欧美视频在线观看一区| 中文字幕日韩免费| 精品高清一区二区三区| 国产一级在线播放| 夜夜精品视频一区二区| 日本少妇高清视频| 国产精品久久久一区麻豆最新章节| 在线观看免费小视频| 亚洲国产精品精华液2区45| 精品人妻一区二区三区视频| 91亚洲精品久久久蜜桃| 日韩成人av一区二区| www.欧美精品一二区| 国产乱淫av麻豆国产免费| 国产91在线|亚洲| 9191在线视频| 成人性视频网站| 丰满岳乱妇一区二区| av亚洲精华国产精华精| 亚洲熟女乱综合一区二区三区| 成人久久18免费网站麻豆 | 91欧美日韩麻豆精品| 欧美日韩国产综合视频在线观看 | 亚洲成在人线av| 手机福利小视频在线播放| 精品视频在线播放色网色视频| 亚洲三级中文字幕| 亚洲性xxxx| 91短视频版在线观看www免费| 日韩视频免费在线| 怡红院红怡院欧美aⅴ怡春院| 欧美第一页在线| 99久久精品免费看国产小宝寻花 | 欧美bbbbbbbbbbbb精品| 色素色在线综合| 亚洲一区精品在线观看| 欧美一级二级三级蜜桃| 午夜小视频在线播放| 国产亚洲激情在线| 黄色成人影院| 性色av一区二区三区在线观看| 中文字幕乱码中文乱码51精品| 国产精品久久久久久久久久久新郎 | 午夜精品久久久久久久久久| 国语对白永久免费| 欧美日韩视频在线一区二区| 国内老熟妇对白hdxxxx| 亚洲精品aⅴ中文字幕乱码 | 欧美高清电影在线看| 极品视频在线| 成人黄色免费网站在线观看| theporn国产在线精品| 欧美亚洲爱爱另类综合| 亚洲a在线视频| 国产午夜大地久久| 久久电影网站中文字幕| 日韩免费高清一区二区| 国产精品久久久久影院色老大| 久久机热这里只有精品| 色婷婷综合久久久久中文| 99热这里只有精品在线观看| 日韩风俗一区 二区| 嫩草香蕉在线91一二三区| 国内伊人久久久久久网站视频| 最新日韩三级| 成人在线视频电影| 日本黄色精品| 无罩大乳的熟妇正在播放| 精品亚洲aⅴ乱码一区二区三区| 性囗交免费视频观看| 中文字幕中文乱码欧美一区二区| 五月婷婷激情网| 91精品国产综合久久久蜜臀粉嫩 | 18成人在线观看| 国产精品国产三级国产专区52| 欧美疯狂做受xxxx富婆| 青青草超碰在线| 久久国产精品视频| 户外露出一区二区三区| 国产精品中出一区二区三区| 色综合咪咪久久网| 无码无遮挡又大又爽又黄的视频| 国产经典欧美精品| 欧美性猛交xxxx乱大交少妇| 欧美性猛xxx| 老司机午夜福利视频| 久久电影一区二区| 国外成人福利视频| 青娱乐一区二区| 国产亚洲精品自拍| 中文字幕99页| 亚洲男人电影天堂| 亚洲天堂手机版| 在线观看视频99| 性感美女一区二区在线观看| 精品日本一区二区三区在线观看| 欧美国产91| 亚洲综合伊人久久| 中文字幕一区在线观看视频| 欧美男人天堂网| 亚洲欧美激情四射在线日| 天堂av中文在线观看| 激情伦成人综合小说| 韩日欧美一区| 国产精久久久久| 亚洲一区二区欧美激情| 国产suv精品一区二区69| 久久精品在线视频| 亚洲一区av| 99热都是精品| 国产精品一区二区在线观看不卡| 性欧美疯狂猛交69hd| 欧美高清视频在线高清观看mv色露露十八| 国产三级视频在线播放线观看| 欧洲午夜精品久久久| 精品在线播放| mm1313亚洲国产精品无码试看| 国产片一区二区| 中文字幕在线观看免费| 日韩天堂在线视频| 国产一区二区三区免费观看在线| 中文精品一区二区三区 | 99精彩视频| 精品1区2区3区4区| 在线精品一区二区三区| 欧美日韩国产综合新一区| 欧美日韩在线精品一区二区三区激情综 | 久久久久成人精品无码| 亚洲第一中文字幕在线观看| √8天堂资源地址中文在线| 鲁片一区二区三区| 热久久国产精品| av成人免费网站| 精品国产免费一区二区三区四区| 麻豆mv在线看| 亚洲va久久久噜噜噜久久狠狠| 经典三级在线一区| 麻豆视频在线观看| 精品亚洲aⅴ在线观看| 国产一区一一区高清不卡| 中文字幕日韩精品一区二区| 国产麻豆欧美日韩一区| 日本一二三区不卡| 国产亚洲精品美女久久久久| 在线不卡一区| 无码av天堂一区二区三区| 久久伊99综合婷婷久久伊| 一区二区视频免费| 欧美国产乱视频| 美女久久久久| 欧美又黄又嫩大片a级| 亚洲一区成人在线| 国产视频网址在线| 99精品国产高清一区二区| 欧美一级网站| 日韩精品一区二区亚洲av性色 | 一本色道久久| 国产白丝一区二区三区| 精品久久五月天| 九九九伊在线综合永久| 2021狠狠干| 26uuu另类欧美| 99精品在线看| 国产成人在线播放| 黄色av一区| 日韩国产第一页| 一区二区三区日韩在线| 一区视频网站| gogogo高清免费观看在线视频| 精品成人av一区|