国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

.Net Core 使用 TagProvider 與 Enricher 豐富日志

這篇具有很好參考價(jià)值的文章主要介紹了.Net Core 使用 TagProvider 與 Enricher 豐富日志。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

TagProvider?

[LogProperties] 與 [LogPropertyIgnore] 如果用在DTO不存在任何問(wèn)題,如果用在Domain實(shí)體上,可能有點(diǎn)混亂。

您可能不希望因日志記錄問(wèn)題而使您的域模型變得混亂。對(duì)于這種情況,可以使用[TagProvider]屬性來(lái)豐富日志。

我們?nèi)匀皇褂们懊嬗玫腘etwork實(shí)體,這次它不再使用[LogPropertyIgnore]屬性:

public class NetWorkInfo
{
    public string IPAddress { get; set; }
    public int Port { get; set; }
}

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-841370.html

相反,我們定義了一個(gè)專(zhuān)用的“TagProvider”實(shí)現(xiàn)。

不需要實(shí)現(xiàn)接口或任何類(lèi),只需要正確的方法格式。

下面是我們給Network對(duì)象的標(biāo)簽提供程序,我們只記錄字段IPAddres字段,如下所示:

internal static class NetWorkInfoTagProvider
{
    // ?? Has the required signature 'void RecordTags(ITagCollector, T)'
    public static void RecordTags(ITagCollector collector, NetWorkInfo network)
    {
        // You can add aribrtrary objects to be logged. 
        // You provide a key (first arg) and a value.
        collector.Add(nameof(NetWorkInfo.IPAddress), network.IPAddress);
    }
}

?

定義標(biāo)簽提供程序后,我們現(xiàn)在可以在日志記錄方法中使用它。

將屬性替換[LogProperties]為[TagProvider]如下所示的屬性:

public static partial class Log
{
    [LoggerMessage(
        EventId = 0,
        Level = LogLevel.Error,
        Message = "Can not open SQL connection {err}")]
    public static partial void CouldNotOpenConnection(this ILogger logger, string err,
        [TagProvider(typeof(NetWorkInfoTagProvider), nameof(NetWorkInfoTagProvider.RecordTags))] NetWorkInfo netWork);
}

?

按正常方式調(diào)用即可,可以看到Network.IPAddress已經(jīng)記錄到日志的State屬性中。

private static async Task Main(string[] args)
{
    using ILoggerFactory loggerFactory = LoggerFactory.Create(
        builder =>
        builder.AddJsonConsole(
            options =>
            options.JsonWriterOptions = new JsonWriterOptions()
            {
                Indented = true
            }));

    ILogger logger = loggerFactory.CreateLogger("Program");

    logger.CouldNotOpenConnection("network err", new NetWorkInfo { IPAddress = "123.1.1", Port = 7777 });
}

?

.Net Core 使用 TagProvider 與 Enricher 豐富日志

?

Enricher?

Microsoft.Extensions.Telemetry包可以像Serilog一樣豐富日志。首先添加Nuget包

<PackageReference Include="Microsoft.Extensions.Telemetry" Version="8.3.0" />

?

首先使用方法ILoggingBuilder.EnableEnrichment()啟用全局豐富,并通過(guò)AddProcessLogEnricher將進(jìn)程的日志信息添加到日志中。

builder.Logging.AddJsonConsole(options =>
    options.JsonWriterOptions = new JsonWriterOptions()
    {
        Indented = true
    }
);
builder.Logging.EnableEnrichment(); // Enable log enrichment
builder.Services.AddProcessLogEnricher(x =>
{
    x.ProcessId = true; // Add the process ID (true by default)
    x.ThreadId = true; // Add the managed thread ID (false by default)
});

?

也可以通過(guò)metadata自定義使用的字段

builder.Services.AddServiceLogEnricher(options =>
{
    options.ApplicationName = true; // Choose which values to add to the logs
    options.BuildVersion = true;
    options.DeploymentRing = true;
    options.EnvironmentName = true;
});
builder.Services.AddApplicationMetadata(x =>
{
    x.ApplicationName = "My App";
    x.BuildVersion = "1.2.3";
    x.EnvironmentName = "Development";
    x.DeploymentRing = "test";
});

?

.Net Core 使用 TagProvider 與 Enricher 豐富日志

這些內(nèi)置的豐富器很方便,但也可以創(chuàng)建自定義的實(shí)現(xiàn)。

?

自定義LogEnricher

您可以通過(guò)從或接口IStaticLogEnricher和ILogEnricher派生創(chuàng)建自己的豐富器

  • IStaticLogEnricher: IStaticLogEnricher—是全局的enricher,如果日志在整個(gè)聲明周期中不變則可將其標(biāo)簽添加到記錄器中。
  • ILogEnricher- 每次寫(xiě)入日志時(shí)都會(huì)調(diào)用豐富器,這對(duì)于可能更改的值非常有用。

我們將創(chuàng)建一個(gè)簡(jiǎn)單的IStaticLogEnricher,將當(dāng)前計(jì)算機(jī)名稱(chēng)添加到日志中,另外創(chuàng)建一個(gè)ILogEnricher,將當(dāng)前用戶(hù)Id添加到日志中。

internal class MachineNameEnricher : IStaticLogEnricher
{
    public void Enrich(IEnrichmentTagCollector collector)
    {
        collector.Add("MachineName", Environment.MachineName);
    }
}

internal class UserIdEnricher : ILogEnricher
{
    public void Enrich(IEnrichmentTagCollector collector)
    {
        collector.Add("UserId", Guid.NewGuid().ToString());
    }
}

builder.Logging.EnableEnrichment(); // Enable log enrichment
builder.Services.AddStaticLogEnricher<MachineNameEnricher>();
builder.Services.AddLogEnricher<UserIdEnricher>();

?

.Net Core 使用 TagProvider 與 Enricher 豐富日志

?

到了這里,關(guān)于.Net Core 使用 TagProvider 與 Enricher 豐富日志的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • .NET Core WebAPI中使用Log4net 日志級(jí)別分類(lèi)并記錄到數(shù)據(jù)庫(kù)

    .NET Core WebAPI中使用Log4net 日志級(jí)別分類(lèi)并記錄到數(shù)據(jù)庫(kù)

    記錄日志為文檔 記錄日志到數(shù)據(jù)庫(kù)

    2024年02月20日
    瀏覽(86)
  • 【C#】.net core 6.0 使用第三方日志插件Log4net,配置文件詳細(xì)說(shuō)明

    【C#】.net core 6.0 使用第三方日志插件Log4net,配置文件詳細(xì)說(shuō)明

    歡迎來(lái)到《小5講堂》 大家好,我是全棧小5。 這是《C#》系列文章,每篇文章將以博主理解的角度展開(kāi)講解, 特別是針對(duì)知識(shí)點(diǎn)的概念進(jìn)行敘說(shuō),大部分文章將會(huì)對(duì)這些概念進(jìn)行實(shí)際例子驗(yàn)證,以此達(dá)到加深對(duì)知識(shí)點(diǎn)的理解和掌握。 溫馨提示:博主能力有限,理解水平有限

    2024年04月12日
    瀏覽(31)
  • net core內(nèi)置日志

    引入 Microsoft.Extensions.Logging 命名空間:用于定義和實(shí)現(xiàn)日志記錄功能 ILogger接口 a. 內(nèi)置日志系統(tǒng)的主要接口,用于記錄日志信息,可以通過(guò)一來(lái)注入將ILogger實(shí)例注入到記錄日志的類(lèi)中,并使用它來(lái)記錄不同級(jí)別的日志消息 ILoggerFactory接口 a. 用于創(chuàng)建ILogger實(shí)例工廠接口,可以

    2024年02月16日
    瀏覽(16)
  • ASP.NET Core 的日志系統(tǒng)

    ASP.NET Core 提供了豐富日志系統(tǒng)。 可以通過(guò)多種途徑輸出日志,以滿(mǎn)足不同的場(chǎng)景,內(nèi)置的幾個(gè)日志系統(tǒng)包括: Console,輸出到控制臺(tái),用于調(diào)試,在產(chǎn)品環(huán)境可能會(huì)影響性能。 Debug,輸出到 System.Diagnostics.Debug.WriteLine EventSource,輸出到對(duì)應(yīng)操作系統(tǒng)的日志系統(tǒng)中,在Windows上是

    2024年02月10日
    瀏覽(17)
  • 使用 LogProperties  source generator 豐富日志

    使用 LogProperties source generator 豐富日志

    Nuget包?Microsoft.Extensions.Telemetry.Abstractions 包含的新的日志記錄source generator,它支持使用[LogProperties]將整個(gè)對(duì)象作為State與日志一起記錄。 我將展示一種方法來(lái)控制如何使用[LogProperties]對(duì)象自動(dòng)豐富日志。 示例 您可以使用日志source generator創(chuàng)建一個(gè)如下所示的方法,并使用[L

    2024年03月18日
    瀏覽(10)
  • ASP.NET Core - 日志記錄系統(tǒng)(一)

    ASP.NET Core - 日志記錄系統(tǒng)(一)

    日志記錄是什么?簡(jiǎn)單而言,就是通過(guò)一些方式記錄應(yīng)用程序運(yùn)行中的某一時(shí)刻的狀態(tài),保留應(yīng)用程序當(dāng)時(shí)的信息。這對(duì)于我們進(jìn)行應(yīng)用程序的分析、審計(jì)以及維護(hù)有很大的作用。 作為程序員,我們恐怕誰(shuí)也不敢保證我們開(kāi)發(fā)的軟件應(yīng)用一定不存在BUG,一定不會(huì)出現(xiàn)故障,而

    2024年02月17日
    瀏覽(11)
  • .NET Core 2.x 打開(kāi)虛擬機(jī)跟蹤日志。

    .NET Core 運(yùn)行程式: dotnet XXX.dll dotnet run 或者? dotnet publish -c Release -r linux-x64 --self-contained true? ./XXX 設(shè)置環(huán)境變量為1則意味著打開(kāi)CLR虛擬機(jī)日志跟蹤,默認(rèn)為0 export COREHOST_TRACE=1

    2024年01月18日
    瀏覽(16)
  • ASP.NET Core MVC 從入門(mén)到精通之日志管理

    ASP.NET Core MVC 從入門(mén)到精通之日志管理

    隨著技術(shù)的發(fā)展,ASP.NET Core MVC也推出了好長(zhǎng)時(shí)間,經(jīng)過(guò)不斷的版本更新迭代,已經(jīng)越來(lái)越完善,本系列文章主要講解ASP.NET Core MVC開(kāi)發(fā)B/S系統(tǒng)過(guò)程中所涉及到的相關(guān)內(nèi)容,適用于初學(xué)者,在校畢業(yè)生,或其他想從事ASP.NET Core MVC 系統(tǒng)開(kāi)發(fā)的人員。 經(jīng)過(guò)前幾篇文章的講解,初步

    2024年02月09日
    瀏覽(22)
  • .NET Core 實(shí)現(xiàn)日志打印輸出在控制臺(tái)應(yīng)用程序中

    .NET Core 實(shí)現(xiàn)日志打印輸出在控制臺(tái)應(yīng)用程序中

    在本文中,我們將探討如何在 .NET Core 應(yīng)用程序中將日志消息輸出到控制臺(tái),從而更好地了解應(yīng)用程序的運(yùn)行狀況。 在 .NET Core 中,日志輸出打印是使用 Microsoft.Extensions.Logging 命名空間中的類(lèi)和方法實(shí)現(xiàn)的。首先,我們需要確保在項(xiàng)目中添加了以下必要的依賴(lài)包: Microsoft.Ex

    2024年02月11日
    瀏覽(697)
  • Taurus .Net Core 微服務(wù)開(kāi)源框架:Admin 插件【4-2】 - 配置管理-Mvc【含請(qǐng)求日志打印】

    Taurus .Net Core 微服務(wù)開(kāi)源框架:Admin 插件【4-2】 - 配置管理-Mvc【含請(qǐng)求日志打印】

    繼上篇:Taurus .Net Core 微服務(wù)開(kāi)源框架:Admin 插件【4-1】 - 配置管理-Kestrel【含https啟用】 本篇繼續(xù)介紹下一個(gè)內(nèi)容: 界面如圖: 以下為配置說(shuō)明: 控制 Taurus 的 Mvc 是否啟用,比如網(wǎng)關(guān)、或注冊(cè)中心,或者使用其它Mvc框架,可以選擇不啟用。 如正常訪問(wèn)Mvc時(shí): 禁用它后:

    2024年02月11日
    瀏覽(18)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包