亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

.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

博白县| 建昌县| 连山| 繁峙县| 沙河市| 游戏| 泸州市| 绍兴县| 广宗县| 开封县| 德惠市| 巫溪县| 刚察县| 乌海市| 柳州市| 高陵县| 东港市| 庆元县| 高邮市| 赤壁市| 新平| 红桥区| 蛟河市| 明溪县| 漳州市| 海门市| 林甸县| 墨脱县| 湘乡市| 土默特左旗| 静安区| 区。| 平舆县| 大港区| 湘潭县| 曲阳县| 崇州市| 迭部县| 济宁市| 庄河市| 长乐市|