最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

為ABP框架增加日志組件與依賴注入服務

 更新時間:2022年02月23日 11:15:32   作者:癡者工良  
這篇文章介紹了為ABP框架增加日志組件與依賴注入服務的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

自動依賴注入

在 AbpBase.Web 的 AbpBaseWebModule 中,添加一個函數(shù):

此函數(shù)用于掃描模塊中的服務,自動將其加入容器中,這樣就不需要收到加入了。

        /// <summary>
        /// 自動掃描所有的服務并進行依賴注入
        /// </summary>
        /// <param name="context"></param>
        private void ConfigureAutoIoc(ServiceConfigurationContext context)
        {
            context.Services.AddAssemblyOf<IoTCenterApplicationModule>();
            context.Services.AddAssemblyOf<IoTCenterWebModule>();
        }

然后在 ConfigureServices 里面,加上

            // 配置依賴注入服務
            ConfigureAutoIoc(context);

這些模塊中繼承了 ITransientDependency 接口的類型都會被自動注入到 DI 容器中。

添加日志依賴

ABP 中,封裝了 Serilog 作為日志組件,大家可以在 AbpBase.Web 項目 中使用 Nuget 安裝 Volo.Abp.AspNetCore.Serilog 包,版本為 3.1.2。

因為 Web 是最上層部分,Volo.Abp.AspNetCore.Serilog 已經(jīng)封裝好了,但是功能還不夠多,所以我們還需要需要繼續(xù)添加 Serilog 提供的拓展。

由于 AbpBase.Application 模塊是服務提供模塊,也是要使用到日志功能的,所以我們需要在 AbpBase.Application 中,用 Nuget 添加 兩個包:

Serilog.AspNetCore 包,版本 3.4.0;

Serilog.Sinks.Async 包,版本 1.4.0 ;

然后在 AbpBaseApplicationModule 中,增加一個注入:

        public override void ConfigureServices(ServiceConfigurationContext context)
        {
            context.Services.AddSingleton<Serilog.ILogger>(Serilog.Log.Logger);
        }

添加日志功能

日志往往要分級、按日期記錄等,因此我們這里配置一個簡單的分級日志配置。

在 Program.cs 中,添加一個函數(shù):

        private static void ConfigLog()
        {
            Serilog.Log.Logger = new LoggerConfiguration()
#if DEBUG
                .MinimumLevel.Debug()
#else
                .MinimumLevel.Information()
#endif
                .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
                .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning)
                .Enrich.FromLogContext()
                .WriteTo.Async(c => c.File($"Logs/{DateTime.Now.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture)}-logs.txt"))
                .WriteTo.Logger(log =>
                        log.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Fatal)
                            .WriteTo.File(
                                $"Logs/{(DateTime.Now.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) + "-Fatal.txt")}",
                                fileSizeLimitBytes: 83886080),
                    LogEventLevel.Fatal)
                .WriteTo.Logger(log =>
                        log.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Error)
                            .WriteTo.File(
                                $"Logs/{(DateTime.Now.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) + "-Error.txt")}",
                                fileSizeLimitBytes: 83886080),
                    LogEventLevel.Fatal)
                .WriteTo.Console()
                .CreateLogger();
        }

這個函數(shù)中配置了 Seriolg 日志輸出,我們將日志分成 Error.txt、Fatal.txt、logs.txt 三個等級,還設置按日期新建日志文件,并且每個日志文件最大為 8 MB。

讀者可以根據(jù)情況自行調(diào)整。

然后在 CreateHostBuilder 后面加上:

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                })
            .UseAutofac()
            .UseSerilog();

再將 Main 方法改成:

        public static int Main(string[] args)
        {
            try
            {
                ConfigLog();
                Serilog.Log.Information("Starting web host.");
                CreateHostBuilder(args).Build().Run();
                return 0;
            }
            catch (Exception ex)
            {
                Serilog.Log.Fatal("Host terminated unexpectedly!");
                return 1;
            }
            finally
            {
                Serilog.Log.CloseAndFlush();
            }
        }

之后我們將可以獲得一個帶有日志功能的 Web 程序了。

依賴注入

如果你需要使用日志服務,則可以引用 using Serilog;

然后使用以下格式使用注入服務:

        private readonly ILogger _ILogger;

        public CustomerExceptionHandler(ILogger logger)
        {
            _ILogger = logger;
        }

完成后,源碼可以參考 https://github.com/whuanle/AbpBaseStruct/tree/master/src/3/AbpBase

源碼地址:https://github.com/whuanle/AbpBaseStruct

到此這篇關于為ABP框架增加日志組件與依賴注入服務的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 為ABP框架添加基礎集成服務

    為ABP框架添加基礎集成服務

    這篇文章介紹了為ABP框架添加基礎集成服務的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • ASP.NET中HyperLink超鏈接控件的使用方法

    ASP.NET中HyperLink超鏈接控件的使用方法

    本文主要介紹HyperLink控件的基礎用法以及在Repeater中綁定數(shù)據(jù)的一些技巧,希望能幫到大家。
    2016-04-04
  • C#簡單獲取屏幕鼠標坐標點顏色方法介紹

    C#簡單獲取屏幕鼠標坐標點顏色方法介紹

    C#簡單獲取屏幕鼠標坐標點顏色方法介紹;有需求的朋友可以參考下
    2012-11-11
  • Blazor框架簡介

    Blazor框架簡介

    Blazor是微軟推出的基于.net平臺以及http://ASP.net?core技術的?交互式客戶Web?UI框架。這篇文章為大家簡單介紹了Blazor框架,需要的朋友們下面隨著小編來一起學習學習吧
    2022-01-01
  • .NET6使WebApi獲取訪問者IP地址

    .NET6使WebApi獲取訪問者IP地址

    這篇文章介紹了.NET6使WebApi獲取訪問者IP地址的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-12-12
  • ASP.NET 入門的五個步驟

    ASP.NET 入門的五個步驟

    ASP.NET 入門的五個步驟...
    2007-01-01
  • .NET?Core讀取配置文件的方法

    .NET?Core讀取配置文件的方法

    這篇文章介紹了.NET?Core讀取配置文件的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-11-11
  • ASP.NET?Core基礎之Startup類

    ASP.NET?Core基礎之Startup類

    這篇文章介紹了ASP.NET?Core基礎之Startup類,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-02-02
  • 那些年,我還在學asp.net(一) 學習筆記

    那些年,我還在學asp.net(一) 學習筆記

    那些年到此,基本學習了前端的基本知識,那些年的第四課就是asp.net,當然那時看了很多教程,比如說:天轟穿,當然天轟穿說得比較多,如面向對象,C#知識,由于當時上過C++,所以就沒有看這些,直接從asp.net開始,主要是學習一下asp.net用到的一些基本控件
    2012-03-03
  • Asp.net?core前端框架Blazor介紹

    Asp.net?core前端框架Blazor介紹

    這篇文章介紹了Asp.net?core前端框架Blazor,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06

最新評論

多伦县| 遂溪县| 南昌县| 贺州市| 宁城县| 马尔康县| 白朗县| 梧州市| 太保市| 甘南县| 永平县| 苏尼特左旗| 永平县| 桃园县| 佳木斯市| 运城市| 栾川县| 尤溪县| 司法| 东莞市| 宜兰市| 平泉县| 鹤山市| 桐柏县| 兴化市| 柏乡县| 青阳县| 汝州市| 安陆市| 休宁县| 遂昌县| 彩票| 九龙城区| 临桂县| 林口县| 德化县| 昭觉县| 赣州市| 武义县| 新巴尔虎右旗| 安西县|