91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

.Net?Core中如何自定義日志組件

發布時間:2022-10-21 10:05:39 來源:億速云 閱讀:137 作者:iii 欄目:開發技術

本篇內容介紹了“.Net Core中如何自定義日志組件”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、前言

在日志工廠記錄器(ILoggerFactory)中實現將日志記錄提供器(ILoggerProvider)對象都可以集成到Logger對象組合中,這樣的話,我們就可以通過基于ILoggerProvider自定義日志記錄程序集成到Logger中,再創建寫日志定義Ilogger,自定義日志記錄器實現日志的輸出方式,這樣實現自定義日志記錄工具。

在這個過程中,日志記錄器ILogger中的Log()方法會記錄執行日志,通過在ILoggerFactory產生的是ILogger類型(也就是我們最終使用的Logger),其Log()方法是依次調用Logger中包含的LoggerInformation[]數組中的ILogger。而ILoggerProvider產生的為各類不同的XxxLogger(也就是上面說的Logger中的LoggerInformation數組包含的如ConsoleLogger、DebugLogger),其Log()方法是把日志寫到具體的目標上去,所以我們自定義的日志程序也可以在日志記錄器工廠中實現添加日志程序,達到將日志寫到具體目標的作用。

二、開始

2.1 自定義Logger

創建一個自定義Logger,目的是將指定的等級日志輸出到控制臺。所以我們創建一個ExtensionLogger的類,指定輸出的日志等級。所以在這之前,我們需要配置一下輸入日志的等級,因此我們需要增加一個等級的配置類ExtensionsConfiguration

ExtensionsConfiguration中,

public class ExtensionsConfiguration
{
    /// <summary>
    /// 日志等級
    /// </summary>
    public LogLevel LogLevel { get; set; } = LogLevel.Warning;
}

再自定義日志記錄類ExtensionLogger,實現接口ILogger,

public class ExtensionsLogger : ILogger
{
    private readonly ExtensionsConfiguration _config;
    public ExtensionsLogger(ExtensionsConfiguration extensionsConfiguration)
    {
        _config = extensionsConfiguration;
    }

    public IDisposable BeginScope<TState>(TState state)
    {
        return null;
    }

    public bool IsEnabled(LogLevel logLevel)
    {
        return logLevel == _config.LogLevel;
    }

    public void Log<TState>(LogLevel logLevel, EventId eventId, TState state,
        Exception exception, Func<TState, Exception, string> formatter)
    {
        if (!IsEnabled(logLevel))
        {
            return;
        }
        Console.WriteLine($" {logLevel} - {eventId.Id} : " + formatter(state, exception));
        
    }
}

根據ILogger接口實現,其中實現Log()接口方法,將日志輸出到指定目標,這里是輸出到控制臺,在設置了日志等級的情況條件下,當滿足條件后,才能輸出對應的日志。

2.2 自定義LoggerProvider

在創建了日志輸出記錄后,我們同時需要提供一個日志程序來增加和創建上面的Logger記錄,所以我們通過自定義日志提供器類ExtensionsLoggerProvider,實現ILoggerProvider類。

public class ExtensionsLoggerProvider : ILoggerProvider
{
    private readonly ExtensionsConfiguration _config;

    public ExtensionsLoggerProvider(ExtensionsConfiguration extensionsConfiguration)
    {
        _config = extensionsConfiguration;
    }

    public ILogger CreateLogger(string categoryName)
    {
        return new ExtensionsLogger(_config);
    }

    public void Dispose()
    {
    }
}

基于ILoggerProvider接口實現自定義類,實現方法CreateLogger,來創建上面的日志記錄。

2.3 使用

在Startup.cs中,通過Configure方法調用配置日志記錄。

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env , ILoggerFactory loggerFactory)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        // 注入ILogggerFactory,然后配置參數
        //添加日志等級
        loggerFactory.AddProvider(new ExtensionsLoggerProvider(new ExtensionsConfiguration { LogLevel= LogLevel.Warning }));
        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }

在此之前,我們可以清空默認的配置,然后根據日志等級,在控制臺中輸出對應的日志記錄。

2.4 效果

在等級為Information情況下,輸出效果如下:

.Net?Core中如何自定義日志組件

這個就是我們通過自定義的方式實現的按日志等級輸出的記錄。

三、拓展

3.1 寫入本地文件

第一步:為LoggerFactory擴張一個方法,提供增加日志寫文件方式的入口。相關的配置來自appsettings.json

第二步:實現我們的logger提供程序,實現ILoggerProvider接口,關鍵方法CreateLogger,創建真正寫日志的logger。對當前的logger可以做適當的緩存,配置logger

第三步:實現我們的logger,實現ILogger接口。真正將log寫入file。

“.Net Core中如何自定義日志組件”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

夏邑县| 青海省| 中西区| 南溪县| 池州市| 太白县| 色达县| 萨迦县| 平罗县| 洪江市| 随州市| 长沙市| 华容县| 密山市| 蒲江县| 诏安县| 加查县| 阜阳市| 榆林市| 寿光市| 正定县| 磐石市| 桃江县| 鲁甸县| 宝坻区| 北辰区| 绥芬河市| 汨罗市| 武乡县| 万全县| 秦皇岛市| 无极县| 屯门区| 蕲春县| 手机| 博罗县| 清水河县| 乡宁县| 富川| 原阳县| 交城县|